Package: placekey
Placekey-pyA Python library for working withPlacekeys. Documentation for this package can be foundhere, and documentation for the Placekey service API can be foundhere. The Plackey design specification is availablehere. The details in Placekey encoding ishere. We welcome your feedback.InstallationThis package can be installed fromPyPIbypipinstallplacekeyMacOS Big Sur may need to runbrew install geosif the installation of theshapelydependency fails.UsageThe basic functionality of the Placekey library is conversion between Placekeys and latitude-longitude coordinates.>>>importplacekeyaspk>>>lat,long=0.0,0.0>>>pk.geo_to_placekey(lat,long)'@dvt-smp-tvz'>>>pk.placekey_to_geo('@dvt-smp-tvz')(0.00018033323813810344,-0.00018985758738881587)The library also allows for conversion between Placekeys andH3 indices.>>>pk.placekey_to_h3('@dvt-smp-tvz')'8a754e64992ffff'>>>pk.h3_to_placekey('8a754e64992ffff')'@dvt-smp-tvz'The distance in meters between two Placekeys can be found with the following function.>>>pk.placekey_distance('@dvt-smp-tvz','@5vg-7gq-tjv')12795124.895573696An upper bound on the maximal distance in meters between two Placekeys based on the length of their shared prefix is provided byplacekey.get_prefix_distance_dict().>>>pk.get_prefix_distance_dict(){0:20040000.0,1:20040000.0,2:2777000.0,3:1065000.0,4:152400.0,5:21770.0,6:8227.0,7:1176.0,8:444.3,9:63.47}Placekeys found in a data set can be partially validated by>>>pk.placekey_format_is_valid('222-227@dvt-smp-tvz')True>>>pk.placekey_format_is_valid('@123-456-789')FalseAPI ClientThis package also includes a client for the Placekey API. The methods in the client are automatically rate limited.>>>fromplacekey.apiimportPlacekeyAPI>>>placekey_api_key="...">>>pk_api=PlacekeyAPI(placekey_api_key)ThePlacekeyAPI.lookup_placekeymethod can be used to lookup the Placekey for a single place.>>>pk_api.lookup_placekey(latitude=37.7371,longitude=-122.44283){'query_id':'0','placekey':'@5vg-82n-kzz'}>>>place={>>>"street_address":"598 Portola Dr",>>>"city":"San Francisco",>>>"region":"CA",>>>"postal_code":"94131",>>>"iso_country_code":"US">>>}>>>pk_api.lookup_placekey(**place,strict_address_match=True){'query_id':'0','placekey':'227@5vg-82n-pgk'}ThePlacekeyAPI.lookup_placekeysmethod can be used to lookup Placekeys for multiple places.>>>places=[>>>{>>>"street_address":"1543 Mission Street, Floor 3",>>>"city":"San Francisco",>>>"region":"CA",>>>"postal_code":"94105",>>>"iso_country_code":"US">>>},>>>{>>>"query_id":"thisqueryidaloneiscustom",>>>"location_name":"Twin Peaks Petroleum",>>>"street_address":"598 Portola Dr",>>>"city":"San Francisco",>>>"region":"CA",>>>"postal_code":"94131",>>>"iso_country_code":"US">>>},>>>{>>>"latitude":37.7371,>>>"longitude":-122.44283>>>}>>>]>>>pk_api.lookup_placekeys(places)[{'query_id':'place_0','placekey':'226@5vg-7gq-5mk'},{'query_id':'thisqueryidaloneiscustom','placekey':'227-222@5vg-82n-pgk'},{'query_id':'place_2','placekey':'@5vg-82n-kzz'}]Full details on how to query the API and how to get an API key can be foundhere.NotebooksJupyter notebooks demonstrating various Placekey functionality are contained in theplacekey-notebooksrepository.SupportThis package runs on Python 3.