2014-12-22 1 views
0

파일에서 일부 지리 정보를 읽으려고합니다. Java에서 geotools 패키지를 사용하고 있습니다. 나는 geodata를 kml, gml 및 .shp로 사용할 수 있으며, 꽤 큰 파일입니다. 외부 브론 출신이며 올바르게 포맷되었습니다.JTS + reading geodata : 포인트 수는 0 또는> 3이어야합니다.

도구를 읽고 싶을 때, GeoTools는 JTS를 사용합니다. 또한 JTS 직접 작업을 시도했지만 동일한 오류 메시지가 나타납니다. 내가 얻을 오류는 다음과 같습니다.

java.lang.IllegalArgumentException: Number of points must be 0 or >3 
    at com.vividsolutions.jts.geom.LinearRing.validateConstruction(LinearRing.java:98) 
    at com.vividsolutions.jts.geom.LinearRing.<init>(LinearRing.java:90) 
    at com.vividsolutions.jts.geom.GeometryFactory.createLinearRing(GeometryFactory.java:324) 
    at com.vividsolutions.jts.geom.GeometryFactory.createLinearRing(GeometryFactory.java:314) 

이 오류는 파일의 중간에 나옵니다. 나는 모든 파일을 수동으로 검사했다 : 모든 "선형"은 3 점 이상을 가지고있다. 그것은 또한 내가 읽으려고하는 파일에 상관 없습니다.

코드하십시오 KML 파일

<MultiGeometry> 
<Polygon> 
<altitudeMode> 
relativeToGround 
</altitudeMode> 
<outerBoundaryIs> 
<LinearRing> 
<coordinates> 
5.301275,50.883145,1 5.301244,50.883233,1 5.301302,50.88329999999999,1 5.301146,50.883552,1 5.301037,50.883757,1 5.301124,50.88386299999999,1 5.301524,50.884123,1 5.301924,50.88421500000001,1 5.302014,50.884129,1 5.301751,50.88367,1 5.301275,50.883145,1 
</coordinates> 
</LinearRing> 
</outerBoundaryIs> 
</Polygon> 
<Point> 
<coordinates> 
5.30152,50.883681,0 
</coordinates> 
</Point> 
</MultiGeometry> 
+0

로깅을 추가하거나 디버거에서 단계별로 구문 분석중인 내용을 정확히 볼 수 있습니까? –

+0

또한 3 가지 형식 모두에서 같은 오류가 발생합니까? –

+0

나는 어떻게 든 그 오류를 제거 할 수 있었다. .. 내가 뭘했는지 모른다. .. – jeanke

답변

0

모든 선형 링에서

File file = new File(bwkFilePath); 
Map map = new HashMap(); 
map.put("url", file.toURL()); 
DataStore dataStore = DataStoreFinder.getDataStore(map); 

일부는 적어도 3 점을 가지고 있어야하고 또한 그들의 첫 번째 점과 마지막 점은 동일해야합니다.

이 예에서는 true이지만 잘못된 파일이 포함되었을 수 있습니다.

+0

응답에 감사드립니다! 나도 알아, 나는 수동으로 파일을 확인하고 이것이 사실입니다! 심지어 작은 파일로 시도해 보았습니다. – jeanke

+0

죄송합니다. ı 더 이상 답변이 없지만 ı 선형 선형 검사를 완료했습니다. 내 gis 프로그램을 캡처 한 스크린 샷이 있습니다. http://i.imgur.com/lL2dbSc.png – esatilmis