我試圖從文件中讀取一些地理數據。我在java中使用geotools包。 我有可用的地理數據爲kml,gml和.shp,這些都是很大的文件。 這些來自外部支架,格式正確。JTS +閱讀地理數據:點數必須爲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)
我通過文件得到這個錯誤一半。我手動檢查了所有文件:所有「linearrings」都有三個以上的點。我試圖讀取哪個文件也沒有關係。
代碼片段:
File file = new File(bwkFilePath);
Map map = new HashMap();
map.put("url", file.toURL());
DataStore dataStore = DataStoreFinder.getDataStore(map);
的一部分從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>
您可以添加一些日誌記錄或在調試器中逐步查看究竟是什麼被解析? –
你是否也得到與所有3種格式相同的錯誤? –
我以某種方式設法擺脫了錯誤...不知道我做了什麼.. – jeanke