我试图从文件中读取一些地理位置。我在java中使用geotools包。 我有地理数据可用作kml,gml和.shp,这些都是非常大的文件。 那些来自外部的支气管并且格式正确。
当我想阅读工具时,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)
我在文件中途收到此错误。我手动检查了所有文件:all&#34; linearrings&#34;有三点以上。我试图阅读的文件也无关紧要。
代码段:
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>
答案 0 :(得分:0)
所有线性环至少必须有3个点,并且它们的第一个点和最后一个点必须相同。
在这个例子中它是真的但可能是你的文件包含错误的。