Saya melihat banyak pertanyaan dari Polygons
ke MultiPolygon
, tetapi apakah ada beberapa cara mudah untuk pergi sebaliknya? Ini juga akan berguna untuk menjaga atribut dari yang MultiPolygon
berlaku untuk yang baru Polygons
.
Saya melihat banyak pertanyaan dari Polygons
ke MultiPolygon
, tetapi apakah ada beberapa cara mudah untuk pergi sebaliknya? Ini juga akan berguna untuk menjaga atribut dari yang MultiPolygon
berlaku untuk yang baru Polygons
.
Jawaban:
Jika Anda memiliki Multipolygon sederhana seperti di bawah ini,
mp=
{
"type": "MultiPolygon",
"coordinates": [
[
[
[-99.028, 46.985], [-99.028, 50.979],
[-82.062, 50.979], [-82.062, 47.002],
[-99.028, 46.985]
]
],
[
[
[-109.028, 36.985], [-109.028, 40.979],
[-102.062, 40.979], [-102.062, 37.002],
[-109.028, 36.985]
]
]
]
}
kemudian menggunakan Javascript / Nodejs Anda dapat mengakses setiap Polygon konstituen menggunakan forEach, dan menulis Polygon baru menggunakan JSON.stringify
mp.coordinates.forEach(function(coords){
var feat={'type':'Polygon','coordinates':coords};
console.log(JSON.stringify(feat));
}
);
Anda juga dapat mengaksesnya langsung dalam satu lingkaran, jika Anda lebih suka cara yang kurang fungsional, diindeks pada mp.coordinates.length misalnya,
for (var i=0;i<mp.coordinates.length;i++){
var feat={'type':'Polygon','coordinates':mp.coordinates[i]};
console.log(JSON.stringify(feat));
}
Jika Anda berurusan dengan FeatureCollection, di mana Anda mungkin memiliki berbagai fitur, masing-masing berisi MultiPolygon, misalnya,
mp = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[[
[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0],
[100.0, 0.0]
]],
[[
[0.0, 0.0], [1.0, 0.0], [1.0, 1.0], [0.0, 1.0],
[0.0, 0.0]
]]
]
},
"properties": {
"prop1": {
"this": "that"
},
"prop0": "value0"
}
}
]
}
Kemudian, Anda dapat menggunakan forEach untuk mendapatkan setiap fitur, dan kemudian mengakses setiap Polygon dalam setiap Multipolygon hanya dengan mengulang melalui array, sebagai dimensi pertama dari array koordinat, adalah indeks ke setiap Polygon. Catatan, Anda juga dapat menyimpan properti, dan menetapkannya ke setiap fitur Polygon baru.
mp.features.forEach(function(feat){
var geom=feat.geometry;
var props=feat.properties;
if (geom.type === 'MultiPolygon'){
for (var i=0; i < geom.coordinates.length; i++){
var polygon = {
'type':'Polygon',
'coordinates':geom.coordinates[i],
'properties': props};
console.log(JSON.stringify(polygon));
}
}
});
Jika Anda menginginkan sesuatu yang lebih canggih, Anda dapat melihat memodifikasi kelas OpenLayers.Format.GeoJSON .