A simple map of Egypt governates using Natural Earth data.
GDAL library is used to extract shape data. Then toplogy is created using TopoJson cli.
Convert Shape files to GeoJSON using shp2json, d3-geo-projection and ndjson-cli
shp2json -n ne_10m_admin_1_states_provinces\ne_10m_admin_1_states_provinces.shp /
| ndjson-filter "d.properties.admin =='Egypt' && d.properties.name != null" /
| ndjson-map "d.id = d.properties.adm1_code, d" | ndjson-reduce /
| ndjson-map "{type: 'FeatureCollection', features: d}" >governate.json
shp2json ne_10m_ocean\ne_10m_ocean.shp | geoproject "d3.geoIdentity().clipExtent([[24.7100, 21.9900],[36.9000, 31.6500]])" /
| ndjson-split "d.features" | ndjson-filter "d.geometry != null" /
| ndjson-reduce | ndjson-map "{type: 'FeatureCollection', features: d}"> ocean.json
shp2json ne_10m_lakes\ne_10m_lakes.shp | geoproject "d3.geoIdentity().clipExtent([[24.7100, 21.9900],[36.9000, 31.6500]])" /
| ndjson-split "d.features" | ndjson-filter "d.geometry != null" /
| ndjson-reduce | ndjson-map "{type: 'FeatureCollection', features: d}"> lakes.json
shp2json ne_10m_rivers_lake_centerlines\ne_10m_rivers_lake_centerlines.shp /
| geoproject "d3.geoIdentity().clipExtent([[24.7100, 21.9900],[36.9000, 31.6500]])" /
| ndjson-split "d.features" | ndjson-filter "d.geometry != null" /
| ndjson-reduce | ndjson-map "{type: 'FeatureCollection', features: d}"> rivers.json
Merge using TopoJSON
geo2topo governate.json ocean.json lakes.json rivers.json> egypt.json