web-dev-qa-db-ja.com

DHIS2 Map Embed / APIエラー:「穴にnull要素を含めることはできません」

DHIS2の地図をWebページに埋め込む必要があります。サンプルの分析@ https://play.dhis2.org/dem 。 APIリンクからマップにアクセスします https://play.dhis2.org/demo/api/26/maps/ytkZY3ChM6J/data 。しかし、ローカルインスタンスで同じことをしようとすると、

{"httpStatus":"Internal Server Error","httpStatusCode":500,"status":"ERROR","message":"holes must not contain null elements"}

以下は、Tomcat7-stderr.logからのスタックトレースです。誰かが私が間違っていることへのポインタを与えることができれば感謝します。

Java.lang.IllegalArgumentException: holes must not contain null elements
    at com.vividsolutions.jts.geom.Polygon.<init>(Polygon.Java:143)
    at com.vividsolutions.jts.geom.GeometryFactory.createPolygon(GeometryFactory.Java:405)
    at org.hisp.dhis.mapgeneration.GeoToolsPrimitiveFromJsonFactory.createPolygonFromJson(GeoToolsPrimitiveFromJsonFactory.Java:137)
    at org.hisp.dhis.mapgeneration.GeoToolsPrimitiveFromJsonFactory.createMultiPolygonFromJson(GeoToolsPrimitiveFromJsonFactory.Java:94)
    at org.hisp.dhis.mapgeneration.InternalMapObject.buildGeometryForOrganisationUnit(InternalMapObject.Java:176)
    at org.hisp.dhis.mapgeneration.InternalMapLayer.addDataMapObject(InternalMapLayer.Java:184)
    at org.hisp.dhis.mapgeneration.GeoToolsMapGenerationService.getSingleInternalMapLayer(GeoToolsMapGenerationService.Java:284)
    at org.hisp.dhis.mapgeneration.GeoToolsMapGenerationService.generateMapImageForUser(GeoToolsMapGenerationService.Java:140)
    at org.hisp.dhis.mapgeneration.GeoToolsMapGenerationService.generateMapImage(GeoToolsMapGenerationService.Java:119)
    at org.hisp.dhis.webapi.controller.mapping.MapController.renderMapViewPng(MapController.Java:292)
    at org.hisp.dhis.webapi.controller.mapping.MapController.getMapData(MapController.Java:209)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at Java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.Java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.Java:136)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.Java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.Java:817)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.Java:731)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.Java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.Java:959)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.Java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.Java:968)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.Java:859)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:624)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.Java:844)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:731)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:303)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:208)
    at org.Apache.Tomcat.websocket.server.WsFilter.doFilter(WsFilter.Java:52)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:241)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:208)
1
user1610132

これは、マップ内の組織単位に関連付けられているポリゴンを表す座標に問題があることを示しています。メッセージが示すように、ポリゴンの穴の表現に問題があります。

座標情報を調べるには、未加工のDHIS 2形式でエクスポートできます。

/api/organisationUnits.json?fields=id,name,coordinates&level2

またはGeoJSONとして:

/api/organisationUnits.geojson?level=2

そして、バリデーターを使用して、無効な座標を持つ組織単位を識別します。

1
lars