add files and folders
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
const fs = require('fs');
|
||||
|
||||
const data = JSON.parse(fs.readFileSync('osm_pontianak.json', 'utf8'));
|
||||
|
||||
const geojson = {
|
||||
type: 'FeatureCollection',
|
||||
features: []
|
||||
};
|
||||
|
||||
data.elements.forEach(el => {
|
||||
if (el.type === 'relation' && el.tags && el.tags.admin_level === '6') {
|
||||
const name = el.tags.name;
|
||||
// Extract polygons from relation members
|
||||
const coordinates = [];
|
||||
el.members.forEach(member => {
|
||||
if (member.type === 'way' && member.geometry) {
|
||||
const wayCoords = member.geometry.map(pt => [pt.lon, pt.lat]);
|
||||
coordinates.push(wayCoords);
|
||||
}
|
||||
});
|
||||
|
||||
// Assemble into MultiPolygon or Polygon (simplistic)
|
||||
if (coordinates.length > 0) {
|
||||
geojson.features.push({
|
||||
type: 'Feature',
|
||||
properties: {
|
||||
kecamatan: name,
|
||||
...el.tags
|
||||
},
|
||||
geometry: {
|
||||
type: 'Polygon',
|
||||
coordinates: coordinates
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Since OSM returns fragments of outer and inner rings in relations, a naive conversion might have topological issues in Leaflet (like crossing lines if not ordered).
|
||||
// We should use an existing library like osmtogeojson. Let's install it and use it.
|
||||
Reference in New Issue
Block a user