1 votos

Reencuadre programáticamente las direcciones no coincidentes utilizando un localizador compuesto diferente

Tengo una tabla de unas 1500 direcciones que se actualiza y geocodifica cada noche utilizando el programador de tareas y un par de scripts de python. La mayoría de estas direcciones se encuentran en el condado para el que trabajo. Tenemos un localizador compuesto local que puede obtener todas estas direcciones sin problemas, pero el localizador no logra coincidir con las direcciones fuera del condado porque está construido sobre conjuntos de datos de todo el condado. Las direcciones que sí se encuentran fuera del condado están repartidas por todo Estados Unidos.

Así que, en su lugar, lo he configurado para que se conecte y utilice el servicio ESRI World Geocoding para geocodificar las direcciones cada noche, lo que funciona a las mil maravillas. Sin embargo, con más de 1.500 direcciones que se geocodifican cada noche, esto requiere mucho crédito, y como podemos geocodificar la mayoría de ellas sin utilizar el servicio, estoy buscando una forma de utilizar primero nuestro localizador local y luego volver a emparejar las direcciones no coincidentes (fuera del condado) utilizando el servicio ESRI World Geocoding. ¿Alguna idea?

1voto

siushi Puntos 48

ESRI tiene un post de 2016 que dice que se puede hacer esto con VB. https://support.esri.com/en/technical-article/000003504

Nunca he hecho esto, pero directamente desde su sitio menciona los siguientes pasos:

  1. Procedimiento En ArcCatalog, cree el servicio de geocodificación que desea utilizar para volver a emparejar las direcciones no coincidentes en el archivo shapefile geocodificado o clase de característica.
  2. Pegue el siguiente código VBA en el editor VBA de ArcCatalog. Este código supone que ya tiene una referencia al archivo shapefile geocodificado o clase de característica y al servicio de geocodificación (en caso, un servicio de geocodificación ZIP (5 dígitos) que desea utilizar para reajustar las direcciones no coincidentes. Este código también supone que el archivo shape o la clase de característica geocodificada shapefile o clase de característica tiene un campo que contiene el código ZIP de 5 dígitos de las direcciones (en este caso, un campo denominado "ARC_Zone").

Código:

Sub AttachNewLocator(pFeatureClass As IFeatureClass, _
    pLocator As ILocator)
  Const FIELD_ZIP_NAME = "ARC_Zone"
  Dim pLocatorAttach As ILocatorAttach
  Dim pLocatorDataset As ILocatorDataset
  Dim strMatchFields As String

  Set pLocatorDataset = pLocator
  Set pLocatorAttach = pLocatorDataset.LocatorWorkspace
  strMatchFields = MatchFields(pLocator)
  pLocatorAttach.AttachLocator pLocator, pFeatureClass, _
    pFeatureClass, FIELD_ZIP_NAME, pFeatureClass.OIDFieldName, _
    pFeatureClass, strMatchFields, pFeatureClass.OIDFieldName
End Sub

Function MatchFields(pAddressGeocoding As IAddressGeocoding) As String
  Dim i As Long
  Dim pMatchFields As IFields
  Dim strMatchFields() As String

  Set pMatchFields = pAddressGeocoding.MatchFields
  ReDim strMatchFields(pMatchFields.FieldCount - 1)
  For i = 0 To pMatchFields.FieldCount - 1
    strMatchFields(i) = pMatchFields.Field(i).Name
  Next i
  MatchFields = Join(strMatchFields, ",")
End Function
  1. Escriba un procedimiento en VBA para obtener una referencia al archivo shape o clase de característica geocodificada y al servicio de geocodificación, y para llamar a la función procedimiento AttachNewLocator. Existen numerosos ejemplos de cómo obtener una referencia a un archivo shape o a una clase de característica en la Developer Help.
  2. Ejecute su procedimiento para adjuntar el nuevo servicio de geocodificación al archivo shape o clase de característica geocodificada.
  3. En ArcCatalog, vuelva a emparejar las direcciones no coincidentes en el shapefile geocodificado o en la clase de característica.

1voto

dfg Puntos 388

Podrías hacer esto en python. Te sugiero que utilices un booleano, y que para empezar lo pongas en falso.

Ejemplo:

candidateFound = False

Entonces con candidateFound == False, haga una llamada a su geocodificador local, si el candidato es encontrado entonces ponga candidateFound = True. En caso contrario, si candidateFound = False, llame al geocodificador mundial de ESRI.

Con el booleano estás controlando a qué dirección se envía utilizando tus créditos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X