GeoAnalytics Engine Code Samples¶
Documentation¶
Code Snippets¶
Load Points with Coordinate Columns¶
from geoanalytics.sql import functions as fns_ga
from pyspark.sql import SparkSession
from pyspark.sql import functions as fns
pqt_pth = "/path/to/parquet"
coord_x_col = "longitude"
coord_y_col = "latitude"
geom_col = "geometry"
# get the active spark session - requires there to be one
spark = SparkSession.getActiveSession()
# read in the data frame
df = (spark.read.parquet(pqt_pth)
.withColumn(
colName=geom_col,
col=fns_ga.point(
x=coord_x_col,
y=coord_y_col,
sr=4326
)
)
.st.set_geometry_field(geom_col)
)
Spatial Join (Intersects)¶
from geoanalytics.sql import functions as fns_ga
from pyspark.sql import functions as fns
df_pnts = df_pnts.join(
other=df_poly,
on=fns_ga.intersects(
geometry1=df_pnts["geometry"],
geomery2=df_poly["overlay_geometry"]
),
how="left",
)
Geocoding¶
-
TODO: Document how to use StreetMap Premium internally
from geoanalytics import auth_info
from geoanalytics.tools import Geocode
from geoanalytics.sql import functions as fns_ga
from pyspark.sql import functions as fns
# variables for urls and paths
data_url = r"https://services1.arcgis.com/Ua5sjt3LWTPigjyD/arcgis/rest/services/Public_School_Location_201819/FeatureServer/0"
loc_pth = r"/home/geoanalytics/United_States.mmpk"
# Create a public schools DataFrame
df = (spark.read.format("feature-service").load(data_url)
.filter(fns.col('STATE') == 'WA')
.select("NAME", "STREET", "CITY", "STATE", "ZIP")
)
# Use Geocode to convert the public school addresses into actual locations
geocoder = (Geocode()
.setLocator(loc_pth)
.setAddressFields("NAME", "STREET", "CITY", "STATE", "ZIP")
.setMinScore(80)
.setOutFields("all")
.setCountryCode("USA")
)
# run the geocoder
df_addr = geocoder.run(df)