Voor een project ben ik aan het proberen om geodata in te lezen.
Hiervoor gebruik ik het Geotools pakket in java.
De geodata heb ik als kml, gml en .shp, dit zijn relatief grote bestanden.
Ik heb drie bronnen die ik alledrie in deze drie formatien heb.
Deze komen van een externe bron en zijn correct opgesteld: de kml wordt geexporteerd uit google earth; de gml en shapebestanden komen van de overheid.
Wanneer ik deze wil inlezen maakt geotools gebruik van JTS.
Ik heb ook al geprobeerd rechtstreeks met JTS te werken, en dan krijg ik dezelfde foutmelding.
De foutmelding die ik krijg is:
Deze krijg ik ongeveer in de helft van het bestand.
Ik ben alle bestanden al handmatig nagelopen: alle "linearrings" hebben meer dan drie punten. Het maakt ook niet uit welk bestand ik probeer in te lezen.
De code die ik gebruik:
Maar dit gaat dus via allerlei tussenklasses naar JTS-tools.
Een stukje uit een .kmlbestand als voorbeeld:
Edit: Ik heb het zelf al opgelost geloof ik ... Foute configuratie die niet echt met het probleem te maken had
Hiervoor gebruik ik het Geotools pakket in java.
De geodata heb ik als kml, gml en .shp, dit zijn relatief grote bestanden.
Ik heb drie bronnen die ik alledrie in deze drie formatien heb.
Deze komen van een externe bron en zijn correct opgesteld: de kml wordt geexporteerd uit google earth; de gml en shapebestanden komen van de overheid.
Wanneer ik deze wil inlezen maakt geotools gebruik van JTS.
Ik heb ook al geprobeerd rechtstreeks met JTS te werken, en dan krijg ik dezelfde foutmelding.
De foutmelding die ik krijg is:
Java:
1
2
3
4
5
| 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) |
Deze krijg ik ongeveer in de helft van het bestand.
Ik ben alle bestanden al handmatig nagelopen: alle "linearrings" hebben meer dan drie punten. Het maakt ook niet uit welk bestand ik probeer in te lezen.
De code die ik gebruik:
Java:
1
2
3
4
| File file = new File(bwkFilePath); Map map = new HashMap(); map.put("url", file.toURL()); DataStore dataStore = DataStoreFinder.getDataStore(map); |
Maar dit gaat dus via allerlei tussenklasses naar JTS-tools.
Een stukje uit een .kmlbestand als voorbeeld:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <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> |
Edit: Ik heb het zelf al opgelost geloof ik ... Foute configuratie die niet echt met het probleem te maken had