Skip to main content

isogeocoder is a tool that generates and assigns standardized iso compliant unique identification numbers or codes for entities based on location information. It can create and assign codes based on a country's administrative division (geo-location) or any administrative level depending on the use case.

Project description

About isogeocoder

isogeocoder is a tool that generates and assigns standardized iso compliant unique identification numbers or codes for entities based on location information. It can create and assign codes based on a country's administrative division (geo-location) or any administrative level depending on the use case. Examples include:

  • Unique school identity for an education management information system.
  • Unique health facility identity for a health management information system.
  • Standard administrative level geocode for country planning.
  • Administrative level identity generation in digital addressing system.

Dependencies

Dependencies isogeocoder is built on the pandas framework; so all pandas operations can work on isogeocoder. Dataframes generated from each administrative level are saved as CSV files.

We also recommended using the Jupyter notebook.

Installation

Install isogeocoder with pip3

pip3 install isogeocoder

Usage/Examples

isogeocoder is a combination of two libraries, one is the iso library, a standard country dataset manipulation; and the geo library which generates administrative level code on your dataset and generates a unique id using the index of your entity dataset. In the examples, we use the Sierra Leone school list provided by the MInistry of Basic and Senior Secondary Education, dataset Sierra Leone School List

GEO Examples:

Generating a unique school identity for an EMIS system

from  isogeocoder import geo
schools_df = geo.data('sl_school_list.csv')
#columns
schools_df.columns 
#output
Index(['idregion', 'iddistrict', 'idchiefdom', 'idsection', 'sch_type',
       'idschool_name'],
      dtype='object')
Region = geo.level1(schools_df,'idregion')
Region
District = geo.level2(schools_df,Region,'iddistrict')
District
Chiefdom = geo.level3(schools_df,District,'idchiefdom')
Chiefdom
Section = geo.level4(schools_df,Chiefdom,'idsection')
Section
<<<<<<< HEAD
Schools = geo.uniqueid(schools_df,Section,'idschool_name')
Schools
=======
>>>>>>> 1bbc060061aa62acd289c8d1934f713be29d7028
School_Type = geo.categorical(schools_df,'sch_type',encoding_type='integer')
School_Type
school_masterlist = geo.gencode(Section,Schools,cat_df=School_Type,level_column='idchiefdom',uniqueid_column='idschool_name_edited_code',title='emis_code',sep='-')
school_masterlist

Generating administrative level coding in digital addressing system

from  isogeocoder import geo
schools_df = geo.data('sl_school_list.csv')
#columns
schools_df.columns 
#output
Index(['idregion', 'iddistrict', 'idchiefdom', 'idsection', 'sch_type',
       'idschool_name'],
      dtype='object')
Region = geo.level1(schools_df,'idregion')
Region
District = geo.level2(schools_df,Region,'iddistrict')
District
Chiefdom = geo.level3(schools_df,District,'idchiefdom')
Chiefdom
Section = geo.level4(schools_df,Chiefdom,'idsection')
Section
Region_Alpha = geo.alpha_coder(Region,column='idregion',clen=2)
District_alpha = geo.alpha_coder(District,column='iddistrict',clen=3,add_char='D')
Alpha_df = geo.alpha_merger(region_alpha,district_alpha,'idregion',sufixs=['Reg','Dis'],level=1,sep='-')
Chiefdom_level = Chiefdom[['iddistrict_code','idchiefdom','idchiefdom_code']]
Chiefdom_Alpha= geo.alpha_merger_l3(alpha_df,Chiefdom_level,'idchiefdom_code','iddistrict_code',2,sep='-')
Section_level =   Section[['idchiefdom_code','idsection','idsection_code']]
digital_addressing = geo.alpha_merger_l4(l3,Section_level,'idsection_code','idchiefdom_code',4,sep='-')
digital_addressing

ISO Example:

import pandas as pd
from  isogeocoder import iso
continents_df = pd.read_csv(iso.countries_data())
subdivision_df = pd.read_csv(iso.subdiv_data())
iso.continents(continents_df)
dataframe of subregions in a continent
iso.subregions(continents_df,'Africa',level=1,sep='-')
iso.countries(continents_df,'Africa',level=2,sep='-')
iso.country(subdivision_df,'Sierra Leone')

Documentation

Documentation is available here

Contributing

PR requests are highly welcome, fork and commit your changes

Authors

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

isogeocoder-0.0.1.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

isogeocoder-0.0.1-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file isogeocoder-0.0.1.tar.gz.

File metadata

  • Download URL: isogeocoder-0.0.1.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for isogeocoder-0.0.1.tar.gz
Algorithm Hash digest
SHA256 a79924e3ec24a50dc770f0de23179708d30ce5727db7894b8e6691bb87c5fc55
MD5 b87951382ad26872c12d0b3bd4738e1b
BLAKE2b-256 206778f900a8f8f6f54019dc760e876e8cad17ceba3e408afb2424ee3686730e

See more details on using hashes here.

File details

Details for the file isogeocoder-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: isogeocoder-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for isogeocoder-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 38537093edebf250f6be0b84c936c26bfc3b6ba718d9ed918fda1df6c5d30cbc
MD5 aaea5f54f5c15424fc13e2b0af4ce8d7
BLAKE2b-256 ad229ed1ebbc894427eed39f3d313f16aed6d58ca732b448990c707bb59b9a73

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page