JTS +读取地理数据:点数必须为0或> 3

时间:2014-12-22 15:06:06

标签: java geotools jts

我试图从文件中读取一些地理位置。我在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>

1 个答案:

答案 0 :(得分:0)

所有线性环至少必须有3个点,并且它们的第一个点和最后一个点必须相同。

在这个例子中它是真的但可能是你的文件包含错误的。