import mermaid from ''; mermaid.initialize({ startOnLoad: true });
Cheat sheet on geocoding.
from jyquickhelper import add_notebook_menu
add_notebook_menu()
from pyquickhelper.filehelper import unzip_files
unzip_files("geo_data.zip", ".")
['.\\Centerline.dbf', '.\\Centerline.prj', '.\\Centerline.shp', '.\\Centerline.shx']
import shapefile
shp = shapefile.Reader("Centerline.shp")
records = shp.records()
shapes = shp.shapes()
fields = shp.fields
shapes[0].__dict__
{'shapeType': 3, 'points': [(1312867.164001003, 260498.0600337088), (1313098.4133638293, 260489.8426001817), (1313098.288386017, 260482.84261640906)], 'parts': [0], 'bbox': [1312867.164001003, 260482.84261640906, 1313098.4133638293, 260498.0600337088]}
{k[0]:v for k,v in zip(fields[1:], records[0])}
{'StreetName': 'NE 118th CT', 'FromStreet': '132nd PL NE', 'ToStreet': 'E of 132nd PL NE', 'StreetWidt': 34.0, 'ConstYear': 1980.0, 'ConstBy': '', 'd_Classifi': 4.0, 'd_Ownershi': 'RED', 'd_Status': 'ACT', 'd_DataSour': 'EXT', 'd_InsideCi': 'YES', 'FromLeft': 13200, 'ToLeft': 13398, 'FromRight': 13201, 'ToRight': 13399, 'LeftCity': 'RED', 'RightCity': 'RED', 'LeftZip': '98052', 'RightZip': '98052', 'Side': 'B', 'Exclude': '', 'Location': '', 'lz_evn': 'G', 'lz_odd': 'G', 'la_evn': 'G', 'la_odd': 'G', 'StreetNa_1': 'NE 118 CT', 'FireArteri': 0, 'surface': '1', 'Migrated': 'YES', 'd_ConstBy': '', 'RedCenterl': 7, 'MaxSpeedLi': 25, 'CreatedBy': '', 'DateCreate': b'', 'ModifiedBy': 'ESP-NFEARS', 'DateModifi': datetime.date(2016, 7, 21), 'StAlias1': '', 'StAlias2': '', 'StAlias3': '', 'AssetID': 'Cntl7', 'LucityAuto': 0, 'd_AssetTyp': 'Centerline', 'CalcLength': 238.39641915, 'Shape_len': 238.396419151}
Source : GIS Tips – How to Find the EPSG Code of your Shapefile
The file <name>.prj
contains informations about the coordinates used to encode the shapefiles.
%load_ext pyensae
%head Centerline.prj
PROJCS["NAD_1983_HARN_StatePlane_Washington_North_FIPS_4601_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Foot_US",0.3048006096012192]],VERTCS["NGVD_1929",VDATUM["National_Geodetic_Vertical_Datum_1929"],PARAMETER["Vertical_Shift",0.0],PARAMETER["Direction",1.0],UNIT["Foot_US",0.3048006096012192]]
from pyproj import Proj, transform
p1 = Proj(init='epsg:2926') # returned by Prj2ESPG
p2 = Proj(init='epsg:4326') # longitude / latidue
x0, y0 = 1312487.225652799, 231314.96255882084
transform(p1,p2,x0,y0)
(-109.78898903640629, 48.55518509715834)