Package: geomaroc
Welcome to geomarocA Python library to make working with geospatial data of Morocco easier.GitHub repo:https://github.com/AmineAndam04/geomarocPyPI:https://pypi.org/project/geomaroc/Raw data:https://github.com/AmineAndam04/geomaroc-Raw-dataR version:https://github.com/AmineAndam04/R-geomarocCRAN:https://CRAN.R-project.org/package=geomarocIntroductionPeople who work in data science are seeing  increased need to work with geospatial data, especially for visualization purposes (e.g. during the covid-19 pandemic).Geopandas is a very popular geospatial library in python that extends Pandas to allow spatial operations on geometrics types.Working with geopands requires having access to coordinates of the items of our map (polygon coordinates), but having accesss to those coordinates is not an easy task.In fact, we often need the shapefiles in order to plot a map. Trying to find those shapefiles can be a long journey, especailly for someone with zero experience with geospatial data. Moreover, for someone interested in the  geospatial data of Morocco, the majority of shapefiles available online are either of very poor quality, or they don't provide province-level,prefectue-level or district-level coordinates.Even if we manage to find the appropriate shapefiles, they usually come without the southern regions of Morocco.Geomarochelps the user get those coordinates easly.This library aims to fix these problem by:1. providing methods to automatically get the boundary coordinates to plot maps of Morocco **without having acces to shapefiles.**
  
 2. providing access to the coordinates of low-level administrative subdivisions (e.g. province, prefecture, districs).
  
 3. providing access to the complete map of  Morocco (including the southern regions of Morocco)illustration:To generate those plots go toGalleryRequirementsgeomaroc library needs the following packages :pandas,geopandas,shapely,jsonandimportlib.InstallpipinstallgeomarocimportgeomarocUsagegetRegion() :Helps to plot the shape of each region.importgeomaroc## working with n_regiongp=geomaroc.getRegion("Casablanca-Settat")gp.plot()## working with id_regiongp=geomaroc.getRegion(id_region=6)# Attention!! don't write geomaroc.getRegion(6)gp.plot()getMultiRegion() :Helps to plot the shape of multiple regions.importgeomaroc## working with n_regiongp=geomaroc.getMultiRegion(["Casablanca-Settat",Draa-Tafilalet])gp.plot()## working with id_regiongp=geomaroc.getMultiRegion(id_region=[6,8])gp.plot()getProvince() :Helps to plot the shape of provinces within a region.importgeomaroc## working with n_regiongp=geomaroc.getProvince("Casablanca-Settat")gp.plot()## working with id_regiongp=geomaroc.getProvince(id_region=6)gp.plot()getMultiProvince(): Helps to plot the shape of provinces in multiple regions.importgeomaroc## working with n_regiongp=geomaroc.getMultiProvince(["Casablanca-Settat",Draa-Tafilalet])gp.plot()## working with id_regiongp=geomaroc.getMultiProvince(id_region=[6,8])gp.plot()getDistrict(): Helps to plot the shape of districts within a province.importgeomaroc## working with n_provincegeomaroc.getDistrict("Tetouan")gp.plot()## working with id_provincegp=geomaroc.getProvince(id_region=571)gp.plot()getMultiDistrict(): Helps to plot the shape of districts in multiple provinces.importgeomaroc## working with n_provincegp=geomaroc.gp=geomaroc.getMultiDistrict(["Tetouan","Tanger-Assilah","Al-Hoceima"])gp.plot()## working with id_provincegp=geomaroc.geomaroc.getProvince(id_region=[571,51,511])gp.plot()Regions() & Provinces() : Hepls to respect the notation and to get the id of each region and provinceNotationWe adpoted this methode to work with names and id of regions,provinces and districts :replace "é" with "e"replace "è" with "e"replace " " with "-"replace "â" with "a"So "Tanger-Tétouan-Al Hoceima" becomes "Tanger-Tetouan-Al-Hoceima" and "Drâa-Tafilalet" becomes "Drâa-Tafilalet"Use geomaroc.Regions() and geomaroc.Provinces() to check the notations:region=geomaroc.Regions()region{'Beni-Mellal-Khenifra': 5,
 'Casablanca-Settat': 6,
 'Draa-Tafilalet': 8,
 'Eddakhla-Oued-Eddahab': 12,
 'Fes-Meknes': 3,
 'Guelmim-Oued-Noun': 10,
 'Laayoune-Sakia-El-Hamra': 11,
 'Marrakech-Safi': 7,
 'Oriental': 2,
 'Rabat-Sale-Kenitra': 4,
 'Souss-Massa': 9,
 'Tanger-Tetouan-Al-Hoceima': 1}importpandasaspdprovinces=geomaroc.Provinces()province=pd.DataFrame(columns=["Region","Id_region","Province","Id_province"])foriinrange(len(provinces.keys())):forjinrange(len(provinces[list(provinces.keys())[i]])):reg=list(provinces.keys())[i]prov=list(provinces[reg].keys())[j]province=province.append({"Region":reg,"Id_region":region[reg],"Province":prov,"Id_province":provinces[reg][prov]},ignore_index=True)provinceRegion	                 Id_region	Province	Id_province
0	Beni-Mellal-Khenifra	     5	     Khouribga	      311
1	Beni-Mellal-Khenifra	     5	     Khenifra	      301
2	Beni-Mellal-Khenifra	     5	     Azilal	      81
3	Beni-Mellal-Khenifra	     5	     Beni-Mellal	 91
4	Beni-Mellal-Khenifra	     5	     Fquih-Ben-Salah 255
...	...	...	...	...
70	Tanger-Tetouan-Al-Hoceima	1	     Mdiq-Fnidq	 573
71	Tanger-Tetouan-Al-Hoceima	1	     Ouezzane	      405
72	Tanger-Tetouan-Al-Hoceima	1	     Tanger-Assilah	 511
73	Tanger-Tetouan-Al-Hoceima	1	     Tetouan	      571
74	Tanger-Tetouan-Al-Hoceima	1	     Al-Hoceima	 51Raw dataVisitgeomaroc raw datagallery