def batch_geocode(l_adress, kind='arcgis'): if kind == 'arcgis': gis = GIS("http://www.arcgis.com", username=username, password=pwd) # use the first of GIS's configured geocoders geocoder = get_geocoders(gis)[0] results = batch_geocode(l_adress) lats = [r['location']['x'] for r in results] lngs = [r['location']['y'] for r in results] return lats, lngs
from arcgis import gis, geocoding from airflow.models import Variable from airflow.hooks.postgres_hook import PostgresHook ago = gis.GIS("https://detroitmi.maps.arcgis.com", Variable.get('AGO_USER'), Variable.get('AGO_PASS')) geocoders = { 'composite': geocoding.get_geocoders(ago)[0], 'address': geocoding.get_geocoders(ago)[1], 'centerline': geocoding.get_geocoders(ago)[2] } def geocode_rows(**kwargs): from arcgis import geocoding # Expected **kwargs: # table: name of table to geocode # address_column: name of address column or expression # geometry_column: name of geometry column # parcel_column: name of parcel column # where: a Postgres clause to restrict which rows get geocoded # geocoder: enum ['composite', 'address', 'centerline']. default to composite hook = PostgresHook('etl_postgres') # default where clause where = kwargs['where'] if 'where' in kwargs.keys() else "1 = 1" geocoder = kwargs['geocoder'] if 'geocoder' in kwargs.keys( ) else 'composite'
log.write("----------------------------" + "\n") log.write("----------------------------" + "\n") log.write("Log: " + str(d) + "\n") log.write("\n") # Start process... starttime = datetime.datetime.now() log.write("Begin process:\n") log.write(" Process started at " + str(starttime) + "\n") log.write("\n") ''' Sign into ArcGIS Online ''' gis = GIS(url='https://www.arcgis.com', username='******', password='******') geocoder = get_geocoders(gis)[0] ''' INPUT TABLES ''' facilitiesdf = pd.read_excel( r'D:\Projects\TCHD\TCHD_spyder\Facilities.xlsx') septicdf = pd.read_excel(r'D:\Projects\TCHD\TCHD_spyder\Septic.xlsx') ''' DEFINE INPUT FUNCTIONS TO GET X,Y ''' def getxlonfacilites(arow): if pd.isnull(arow['GIS_LONGITUDE']) or arow['GIS_LONGITUDE'] == -1: addr = "%s %s %s %s %s, %s %s" % ( int(arow['STREET_NUMBER']), arow['STREET_DIRECTION'], arow['STREET_NAME'], arow['STREET_TYPE'], arow['CITY'], arow['STATE'], arow['ZIP'])