Skip to main content

Vgrid - All in One Global Geocoding Systems

Project description

Vgrid - All in One Global Geocoding Systems

Installation:

  • Using pip:

    pip install vgrid --upgrade
    
  • Visit vgrid on PyPI

Usage - Python:

Import vgrid, initialize Latitude and Longitude for testing:

from vgrid.geocode import geohash, georef, maidenhead, mgrs, olc
import h3
from vgrid.geocode.gars import GARSGrid
from vgrid.geocode.s2 import LatLng, CellId
from vgrid.geocode.geocode2geojson import *

latitude, longitude = 10.775275567242561, 106.70679737574993
print(f'Latitude, Longitude: ({latitude}, {longitude})')

GARS

print('\nGARS:')
gars_precision = 1 # 1, 5, 15, 30 minutes
gars_grid = GARSGrid.from_latlon(latitude, longitude, gars_precision)
gars_code = gars_grid.gars_id
print(gars_code)

data = gars2geojson(gars_code)
output_file = f'gars_{gars_precision}.geojson'
with open(output_file, 'w') as f:
    geojson.dump(data, f, indent=2)  
print(f'GeoJSON written to {output_file}')

Geohash

print('\Geohsash:')
geohash_precision = 9 # [1-->30]
geohash_code = geohash.encode(latitude, longitude, geohash_precision)
geohash_decode = geohash.decode(geohash_code, True)
print(f'Geohash Code at precision = {geohash_precision}: {geohash_code}')
print(f'Decode {geohash_code} to WGS84 = {geohash_decode}')

data = geohash2geojson(geohash_code)
output_file = 'geohash.geojson'
with open(output_file, 'w') as f:
    geojson.dump(data, f, indent=2)  
print(f'GeoJSON written to {output_file}')

GEOREF

print('\GEOREF:')
georef_precision = 4 # [0 -->10]
georef_code = georef.encode(latitude, longitude, georef_precision)
georef_decode = georef.decode(georef_code, True)
print(f'latitude, longitude = {latitude},{longitude}')

print(f'GEOREF Code at precision = {georef_precision}: {georef_code}')
print(f'Decode {georef_code} to WGS84 = {georef_decode}')

data = georef2geojson(georef_code)
output_file = f'georef{georef_precision}.geojson'
with open(output_file, 'w') as f:
    geojson.dump(data, f, indent=2)  # 'indent' makes the JSON output more readable
print(f'GeoJSON written to {output_file}')

H3

print('\H3:')
h3_precision = 13 #[0-->15]
h3_code = h3.latlng_to_cell(latitude, longitude, h3_precision)
h3_decode = h3.cell_to_latlng(h3_code)

print(f'latitude, longitude = {latitude},{longitude}')
print(f'H3 code at precision = {h3_precision}: {h3_code}')
print(f'Decode {h3_code} to WGS84 = {h3_decode}')

data = h32geojson(h3_code)
output_file = f'h3_{h3_precision}.geojson'
with open(output_file, 'w') as f:
    geojson.dump(data, f, indent=2)  # 'indent' makes the JSON output more readable
print(f'GeoJSON written to {output_file}')

Maidenhead

print('\nMaidenhead:')
maidenhead_precision = 4 #[1-->4]
maidenhead_code = maidenhead.toMaiden(latitude, longitude, maidenhead_precision)
maidenGrid = maidenhead.maidenGrid(maidenhead_code)
print(f'Maidenhead Code at precision = {maidenhead_precision}: {maidenhead_code}')
print(f'Convert {maidenhead_code} to center and cell in WGS84 = {maidenGrid}')

data = maidenhead2geojson(maidenhead_code)
output_file = 'maidenhead.geojson'
with open(output_file, 'w') as f:
    geojson.dump(data, f, indent=2)  # 'indent' makes the JSON output more readable
print(f'GeoJSON written to {output_file}')

MGRS

print('\nMGRS:')
mgrs_precision = 4 # [0 -->5]
mgrs_code = mgrs.toMgrs(latitude, longitude, mgrs_precision)
mgrs_code_to_wgs = mgrs.toWgs(mgrs_code)
print(f'MGRS Code at precision = {mgrs_precision}: {mgrs_code}')
print(f'Convert {mgrs_code} to WGS84 = {mgrs_code_to_wgs}')

data = mgrs2geojson(mgrs_code)
output_file = f'mgrs{mgrs_precision}.geojson'
with open(output_file, 'w') as f:
    geojson.dump(data, f, indent=2)  # 'indent' makes the JSON output more readable
print(f'GeoJSON written to {output_file}')

OLC

print('\OLC:')
olc_precision = 11 #[10-->15]
olc_code = olc.encode(latitude, longitude, olc_precision)
olc_decode = olc.decode(olc_code)
print(f'OLC at precision = {olc_precision}: {olc_code}')
print(f'Decode {olc_code} to center and cell in WGS84 = {olc_decode}')

data = olc2geojson(olc_code)
output_file = f'olc{olc_precision}.geojson'
with open(output_file, 'w') as f:
    geojson.dump(data, f, indent=2)  # 'indent' makes the JSON output more readable
print(f'GeoJSON written to {output_file}')

S2

print('\S2:')
s2_precision = 21 #[0 -->30]
lat_lng = LatLng.from_degrees(latitude, longitude)
cell_id = CellId.from_lat_lng(lat_lng)
cell_id = cell_id.parent(s2_precision)
cell_id_token= CellId.to_token(cell_id)
print(cell_id_token)

data = s22geojson(cell_id_token)
output_file = f's2_{s2_precision}.geojson'
with open(output_file, 'w') as f:
    geojson.dump(data, f, indent=2)  # 'indent' makes the JSON output more readable
print(f'GeoJSON written to {output_file}')

Usage - CLI:

GARS

> gars2geojson 574JK1918

Geohash

> geohash2geojson w3gvk1td8

GEOREF

> georef2geojson VGBL42404651

H3

> h32geojson 8d65b56628e46bf 

Maidenhead

> maidenhead2geojson OK30is46 

MGRS

> mgrs2geojson 34TGK56063228

OLC

> olc2geojson 7P28QPG4+4P7

S2

> s22geojson 31752f45cc94 

Command line for creating geocoding grids in shapefile format

> geohashgrid -p 1 -o geohash_1.shp (p = [1..12])
> maidenheadgrid -p 1 -o maidenhead_1.shp (p = [1, 2, 3, 4])
> olcgrid -p 1 -o olc_1.shp (p = [2,4,8])
> gzd -o gzd.shp (Create Grid Zone Designators - used by MGRS)
> mgrsgrid -o mgrs_32648.shp -cellsize 100000 -epsg 32648 (Create MGRS Grid with cell size 100km x 100km at UTM zone 48N)  

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

vgrid-1.1.3.tar.gz (116.4 kB view details)

Uploaded Source

Built Distribution

vgrid-1.1.3-py3-none-any.whl (129.8 kB view details)

Uploaded Python 3

File details

Details for the file vgrid-1.1.3.tar.gz.

File metadata

  • Download URL: vgrid-1.1.3.tar.gz
  • Upload date:
  • Size: 116.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.9

File hashes

Hashes for vgrid-1.1.3.tar.gz
Algorithm Hash digest
SHA256 169819013b2447be0db7bb4077cd8eb2350b2706f7b55a638922f2e73d1054f7
MD5 151b2d0c65c7a7e288b8c35222148340
BLAKE2b-256 0ad962d48f7f1a7f40378d809c80d2d2f0acd9a970f4ecd58afe75aca4f97c67

See more details on using hashes here.

File details

Details for the file vgrid-1.1.3-py3-none-any.whl.

File metadata

  • Download URL: vgrid-1.1.3-py3-none-any.whl
  • Upload date:
  • Size: 129.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.9

File hashes

Hashes for vgrid-1.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 55cbdfea36463f36c1f56628043c673e6b5a2813716db80da430401d2f5e55a5
MD5 5ffa756019aca902bfb67c91f805757a
BLAKE2b-256 ea2953457f6828bb4584615f05d5e348118740e3301943ee740dc0a29b15ec6c

See more details on using hashes here.

Supported by

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