I am trying to add GeoJSON data into MongoDB, but some of the GeoJSON shapes are failing due to the following error:
com.mongodb.MongoWriteException: Can't extract geo keys: ...Loop 1 shares more than one vertex with its parent loop 0
Here is an example GeoJSON for which this occurs.
Specifically, the error is caused by the two points highlighted in the following close up image. These two points belong to both the shown inner linear ring as well as the exterior ring, and this is what is causing the error.
So here is my question: I am unsure how I can detect and fix this GeoJSON automatically. I would imagine that this one Polygon would need to be converted into a MultiPolygon with two pieces (as opposed to a polygon with a hole, as it is now).
Or, if anyone knows of any tools/methods to make GeoJSON data compliant with MongoDB that would be good.
Here is the full GeoJSON for the shape, where the exterior loop is item in the coordinates
array, and the inner loop causing the error is the last item.
{
"id": 110811,
"osm_type": "relation",
"type": "Feature",
"name": "Litchfield Park",
"properties": {
"name": "Litchfield Park",
"place": "city",
"source": "TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)",
"boundary": "administrative",
"admin_level": "8",
"tiger:reviewed": "no"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[-112.323993, 33.5039334],
[-112.32435799999999, 33.50408899999999],
[-112.327754, 33.504048999999995],
[-112.327773, 33.502589],
[-112.327783, 33.501939],
[-112.32785, 33.497080999999994],
[-112.32786999999999, 33.49552800000001],
[-112.32788, 33.49486099999999],
[-112.327901, 33.493253],
[-112.32825799999999, 33.493253],
[-112.3329832, 33.493306700000005],
[-112.335622, 33.493299],
[-112.336288, 33.49330200000001],
[-112.336288, 33.493488],
[-112.336801, 33.493486999999995],
[-112.34086900000001, 33.493482],
[-112.34322700000001, 33.493491],
[-112.34386, 33.493299],
[-112.34452000000002, 33.49310200000001],
[-112.34522600000001, 33.49289],
[-112.34600540000001, 33.492263900000005],
[-112.34772330000001, 33.4910055],
[-112.3486354, 33.4903811],
[-112.34913360000002, 33.4900443],
[-112.3503794, 33.4892932],
[-112.35093009999999, 33.4889884],
[-112.35122640000002, 33.488814],
[-112.35173169999999, 33.488559],
[-112.35256779999999, 33.4881515],
[-112.353533, 33.487733999999996],
[-112.3545854, 33.487312700000004],
[-112.35478839999999, 33.48724789999999],
[-112.3558504, 33.48684639999999],
[-112.3567109, 33.48658439999999],
[-112.35810099999999, 33.48628099999999],
[-112.35887499999998, 33.486032],
[-112.35918, 33.486002],
[-112.36033699999999, 33.48595],
[-112.362315, 33.48601],
[-112.362413, 33.487824999999994],
[-112.362425, 33.487936999999995],
[-112.36246999999999, 33.488605],
[-112.362433, 33.489405999999995],
[-112.36243599999999, 33.490203],
[-112.36241199999999, 33.491005],
[-112.362423, 33.491795],
[-112.36245, 33.493412000000006],
[-112.362467, 33.493505000000006],
[-112.362514, 33.493480999999996],
[-112.366826, 33.493553000000006],
[-112.36933799999998, 33.49353000000001],
[-112.37179779999998, 33.4934689],
[-112.371945, 33.493509],
[-112.37508899999999, 33.493483999999995],
[-112.37508699999998, 33.493613],
[-112.375283, 33.493611],
[-112.37527599999999, 33.495253000000005],
[-112.37526999999999, 33.4966],
[-112.37526999999999, 33.496704],
[-112.37521699999999, 33.497033],
[-112.37544399999999, 33.497034],
[-112.37552799999999, 33.498924],
[-112.37983499999999, 33.498924],
[-112.37983399999999, 33.503718000000006],
[-112.37982699999999, 33.508189],
[-112.375215, 33.508184],
[-112.37498799999999, 33.508184],
[-112.37172199999999, 33.508201],
[-112.36935199999999, 33.50821200000001],
[-112.366981, 33.508225],
[-112.3669724, 33.50821390000001],
[-112.362921, 33.508245],
[-112.36120600000001, 33.508249],
[-112.35982879999999, 33.5082656],
[-112.35896999999999, 33.508276],
[-112.358268, 33.508283999999996],
[-112.35807099999998, 33.508273],
[-112.35778599999999, 33.508257],
[-112.3578185, 33.5082857],
[-112.357033, 33.508237],
[-112.356505, 33.508235000000006],
[-112.353686, 33.508159000000006],
[-112.349502, 33.508046],
[-112.34901900000001, 33.508034],
[-112.34836999999999, 33.50801500000001],
[-112.346907, 33.507975],
[-112.345176, 33.507926999999995],
[-112.34322600000002, 33.507872],
[-112.342895, 33.50786299999999],
[-112.342428, 33.50784899999999],
[-112.340883, 33.50780699999999],
[-112.340884, 33.508026],
[-112.3420167, 33.5080706],
[-112.342433, 33.508086999999996],
[-112.34323930000001, 33.50810500000001],
[-112.34516400000001, 33.508148000000006],
[-112.349486, 33.508294],
[-112.35068799999999, 33.508345000000006],
[-112.350743, 33.508451],
[-112.353687, 33.508564],
[-112.358069, 33.508553000000006],
[-112.35806699999999, 33.50873800000001],
[-112.353687, 33.508791],
[-112.35316900000001, 33.508769],
[-112.349476, 33.508618000000006],
[-112.34941900000001, 33.508618000000006],
[-112.34515300000001, 33.508419],
[-112.342421, 33.50831900000001],
[-112.340886, 33.508349],
[-112.33733, 33.5082],
[-112.335424, 33.50831000000001],
[-112.33279999999999, 33.508381],
[-112.33271799999999, 33.510760999999995],
[-112.33262300000001, 33.512799],
[-112.332641, 33.513835],
[-112.332611, 33.51462299999999],
[-112.332469, 33.51465099999999],
[-112.33176999999999, 33.51469899999999],
[-112.33128900000001, 33.51469399999999],
[-112.32992, 33.51468499999999],
[-112.329296, 33.51469899999999],
[-112.32825199999999, 33.51468499999999],
[-112.3241173, 33.51467939999999],
[-112.3239957, 33.5043606],
[-112.323993, 33.5039334]
],
[
[-112.324175, 33.51456099999999],
[-112.325555, 33.514655999999995],
[-112.32841799999998, 33.51442899999999],
[-112.32935499999999, 33.51442899999999],
[-112.329967, 33.514450999999994],
[-112.331288, 33.514461999999995],
[-112.331855, 33.514461999999995],
[-112.332469, 33.51444599999999],
[-112.332469, 33.51383],
[-112.332469, 33.512862999999996],
[-112.33247499999999, 33.512839],
[-112.33249799999999, 33.512813],
[-112.3325195, 33.51219890000001],
[-112.332565, 33.510898999999995],
[-112.332628, 33.50813000000001],
[-112.335753, 33.508013000000005],
[-112.33733, 33.508021],
[-112.340745, 33.507962],
[-112.34072400000001, 33.50780399999999],
[-112.340883, 33.50780699999999],
[-112.340883, 33.507698999999995],
[-112.340712, 33.507709],
[-112.339073, 33.507656999999995],
[-112.337862, 33.507517],
[-112.337855, 33.507298999999996],
[-112.33765900000002, 33.506749],
[-112.337857, 33.50669],
[-112.33777099999999, 33.506496999999996],
[-112.338185, 33.50645],
[-112.33894199999999, 33.506255],
[-112.340882, 33.506334],
[-112.34088, 33.504540999999996],
[-112.34087799999999, 33.502598000000006],
[-112.340875, 33.499307],
[-112.340873, 33.497106],
[-112.34087099999999, 33.495249],
[-112.34087099999999, 33.49499],
[-112.33878899999999, 33.494963],
[-112.338206, 33.495243],
[-112.33727900000001, 33.495697],
[-112.336288, 33.494925],
[-112.336288, 33.493488],
[-112.332267, 33.493494],
[-112.33151500000001, 33.493473],
[-112.32825799999999, 33.493387],
[-112.32820799999999, 33.493982],
[-112.32820099999999, 33.494717],
[-112.32818999999999, 33.49535900000001],
[-112.328126, 33.49633000000001],
[-112.328154, 33.496862],
[-112.32808599999998, 33.497473],
[-112.32809699999999, 33.498209],
[-112.32803299999999, 33.499086],
[-112.32800599999999, 33.499883999999994],
[-112.32803599999998, 33.500665999999995],
[-112.32802999999998, 33.501526999999996],
[-112.32803999999999, 33.502167],
[-112.327946, 33.504215],
[-112.324315, 33.50434],
[-112.324304, 33.506460999999994],
[-112.324349, 33.507514],
[-112.324277, 33.513456999999995],
[-112.32426070000001, 33.5136339],
[-112.324175, 33.51456099999999]
]
]
]
}
}