Создать локатор (Геокодирование)

Сводка

Создает локатор, который может искать местоположения или адреса, преобразовывать таблицы адресов или мест в набор точечных объектов или определять адреса точечного местоположения.

Примечание:

Созданные этим инструментом локаторы можно использовать в ArcGIS Pro 2.2, Enterprise 10.6.1 или в более поздних их версиях, а также в качестве сервиса локатора в ArcMap. Не вся функциональность локатора поддерживается в версиях до Enterprise 10.7. Поддержка осуществляется по мере добавления дополнительных функций в более новые версии программного обеспечения. Локаторы, созданные при помощи данного инструмента, не могут использоваться в качестве локального локатора в ArcMap.

Использование

  • Роль локатора определяет тип используемых данных (участки, центральные линии улиц, почтовые индексы, точки интереса и т.д.) и обеспечивает использование правильных полей при построении локатора и информации, возвращаемой в результатах геокодирования. Роли основного локатора, которые предоставляются в ArcGIS Pro, позволяют создавать следующие популярные типы локаторов:

    • PointAddress – адрес, основанный на точках, которые обозначают местоположение дома или здания. Включает Subaddress, основанный на точках, представляющих собой местоположение субадреса дома или строения, например, этаж или квартира.
    • Parcel—Адрес или название участка, основанные на точках или полигонах, которые представляют собой участок земли, который считается недвижимым имуществом и может включать в себя один или несколько домов или других строений, которым обычно присваивается адрес и идентификационный номер участка, например 17 011100120063.
    • StreetAddress – адрес, основанный на улицах, где номер дома интерполируется из диапазона номеров. Включает перекрестки, название и расширение улицы.
    • Point of Interest – состоит из административных единиц, названий мест, предприятий, достопримечательностей и географических объектов, например, Starbucks.
    • DistanceMarker – уличный адрес, который представляет линейное расстояние вдоль улицы, обычно, в километрах или милях, от указанной исходной точки.
    • DistanceRange – тип указателя расстояния, представляющего интерполированные значения расстояния вдоль центральной линии улиц, построенной на базе линейных пространственных объектов.
    • Postal – почтовые индексы, почтовые индексы с расширениями и почтовые отделения, где для получения оптимальных результатов обратного геокодирования должны использоваться полигональные базовые данные.
    • Localities – административные зоны или области, такие как города, районы, штаты и т.д., где для получения оптимальных результатов обратного геокодирования должны использоваться полигональные базовые данные.

  • Для создания локатора с несколькими ролями можно использовать инструмент Создать локатор. Локатор с несколькими ролями позволяет сочетать несколько слоев базовых данных и ролей в одном локаторе, чтобы выполнять поиск для нескольких типов местоположений одновременно.

    Более подробно о сочетании нескольких ролей в одном локаторе

  • Классы объектов и таблицы, представленные в виде сервисов, являются типами данных, которые поддерживаются для использования в качестве основных справочных данных и таблиц альтернативных названий.

  • Таблицы альтернативных названий могут использоваться во всех поддерживаемых ролях локатора и поддерживают альтернативные названия объектов в первичных базовых данных.

    Более подробно о таблицах альтернативных названий

  • Выходные данные этого инструмента могут использоваться как входные данные для инструмента Создать составной локатор адресов.

Синтаксис

arcpy.geocoding.CreateLocator(country_code, primary_reference_data, field_mapping, out_locator, language_code, {alternatename_tables}, {alternate_field_mapping}, {custom_output_fields}, {precision_type})
ParameterОбъяснениеТип данных
country_code

Определяет, где к базовым данным локатора должна применяться характерная для страны логика геокодирования.

Можно задать через AS_DEFINED_IN_DATA и сопоставить значение из primary_reference_data со значением в field_mapping или применить значение ко всему набору данных, указав трехзначный код страны, например, USA, CAN или PRI.

Предоставляет шаблон для страны, содержащий имена полей, доступные для использования в параметре field_mapping, характерные для страны, указанной в создаваемом локаторе.

  • AS_DEFINED_IN_DATAЗначение трехзначного кода языка задается в базовых данных для каждого объекта
  • ASMАмериканское Самоа
  • AUSАвстралия
  • AUTАвстрия
  • BELБельгия
  • CANКанада
  • CHE Швейцария
  • DEUГермания
  • ESPИспания
  • FRAФранция
  • GBRВеликобритания
  • GUMГуам
  • MNPСеверные Марианские острова
  • NLDНидерланды
  • PRIПуэрто-Рико
  • VIRСША Виргинские острова, США
  • USAСоединенные Штаты Америки
  • UMI Внешние малые острова США
String
primary_reference_data
[[reference_data, {role}],...]

Классы пространственных объектов базовых данных и их роли, которые будут использоваться для создания локатора. Для каждой роли может использоваться только одна первичная таблица.

Классы объектов, представленные в виде сервисов, являются типами данных, которые поддерживаются для использования в качестве основных справочных данных.

Внимание:

Если для базовых данных задан определяющий запрос или имеются выбранные объекты, при создании локатора будут включены только запрошенные и выбранные объекты.

Примечание:

При создании локатора с базовыми данными, содержащими миллионы пространственных объектов, необходимо иметь по крайней мере в 3-4 раза больший размер свободного пространства на диске, где находится директория temp, поскольку файлы, используемые для создания локатора, записываются в это местоположение перед копированием локатора в выходное местоположение. Если у вас недостаточно места на жестком диске, произойдет сбой, когда свободное место закончится. Также, что при создании очень больших локаторов, на компьютере должно быть достаточное количество RAM для обработки процессов, занимающих большие объемы памяти.

Value Table
field_mapping
[field_mapping,...]

Сопоставление полей первичных базовых данных с полями, поддерживаемыми ролью локатора. Каждое сопоставление полей в этом параметре происходит в следующем формате, где <role name> - это имя роли локатора, <locator role field name> - это имя поля, которое поддерживается ролью локатора, <primary data> - это имя набора данных, которые используются в параметр primary_reference_data, а <primary data field name> - это имя поля в первичном наборе базовых данных.

Ниже показан пример первичных field_mapping.

# <role name>.<locator role field name> <primary data>.<primary data field name>
# This shows an example:
primary_reference_data_field_map =
"'StreetAddress.HOUSE_NUMBER_FROM_LEFT streets.L_F_ADD';"\
"'StreetAddress.HOUSE_NUMBER_TO_LEFT streets.L_T_ADD';"\
"'StreetAddress.HOUSE_NUMBER_FROM_RIGHT streets.R_F_ADD';"\
"'StreetAddress.HOUSE_NUMBER_TO_RIGHT streets.R_T_ADD';"\
"'StreetAddress.STREET_PREFIX_DIR streets.PREFIX';"\
"'StreetAddress.STREET_PREFIX_TYPE streets.PRE_TYPE';"\
"'StreetAddress.STREET_NAME streets.NAME';"\
"'StreetAddress.STREET_SUFFIX_TYPE streets.TYPE';"\
"'StreetAddress.STREET_SUFFIX_DIR streets.SUFFIX';"\
"'StreetAddress.CITY_LEFT streets.CITYL';"\
"'StreetAddress.CITY_RIGHT streets.CITYR';"\
"'StreetAddress.REGION_LEFT streets.STATE_ABBR';"\
"'StreetAddress.REGION_RIGHT streets.STATE_ABBR';"\
"'StreetAddress.POSTAL_LEFT streets.ZIPL';"\
"'StreetAddress.POSTAL_RIGHT streets.ZIPR'"

Сопоставьте соответствующие поля для каждой таблицы в параметре primary_reference_data. Если вы выберете не сопоставлять дополнительные поля базовых данных, используемых ролью локатора, с полями набора базовых данных, нет необходимости указывать, что сопоставление не используется, используя <None> вместо имени поля.

Чтобы определить <locator role field name> для поля базовых данных, используемых ролью локатора, откройте инструмент Создать локатор в ArcGIS Pro и выберите роль локатора. Имя, которое появится в столбце Имя поля в области Сопоставления полей, будет именем поля роли поля.

Примечание:

Если вы используете таблицу альтернативных названий, сопоставьте ID соединения в primary_reference_data.

Для добавления пользовательских выходных полей имена полей должны быть заданы в параметре custom_output_fields, так же как и параметр field_mapping. Параметр field_mapping будет использовать формат '<locator role field name> <primary data field name>', где <locator role field name> определено как 'RoleName.CustomFieldName', а <primary data field name> - имя поля в первичном наборе базовых данных, как показано в области сопоставления полей в примере выше. Если к роли Street Address добавлено пользовательское поле, вам необходимо сопоставить 'StreetAddress.CustomFieldName_Left' и 'StreetAddress.CustomFieldName_Right' для каждой стороны улицы.

String
out_locator

Файл выходного локатора адресов.

Address Locator
language_code

Определяет, где к базовым данным локатора должна применяться характерная для страны логика геокодирования.

Если поле кода языка существует в первичных базовых данных, задание кода языка может улучшить качество результатов геокодирования.

Он может быть задан, путем установки AS_DEFINED_IN_DATA как language_code и сопоставления значения из primary_reference_data значению в field_mapping, или код языка может быть применен ко всему набору данных при помощи трехзначного кода, представляющего язык адреса, например, ENG.

  • AS_DEFINED_IN_DATAЗначение трехзначного кода языка задается в базовых данных для каждого объекта
  • BAQБаскский
  • CATКаталонский
  • DUT Нидерландский
  • ENGАнглийский
  • FREФранцузский
  • GERНемецкий
  • GLGГалисийский
  • ITA Итальянский
  • SPAИспанский
String
alternatename_tables
[alternatename_tables,...]
(Дополнительный)

Таблицы, содержащие альтернативные названия для объектов в таблицах первичных ролей.

Таблицы, представленные в виде сервисов, являются типами данных, которые поддерживаются для использования в качестве таблиц альтернативных названий.

Внимание:

Если для таблицы альтернативных названий задан определяющий запрос или имеются выбранные записи, при создании локатора будут включены только запрошенные и выбранные объекты.

Value Table
alternate_field_mapping
[alternate_field_mapping,...]
(Дополнительный)

Сопоставляет поля таблиц альтернативных названий с полями альтернативных названий, поддерживаемыми ролью локатора. Каждое сопоставление полей должно использовать следующий формат, в котором <alternate name table role> – это имя роли таблицы альтернативных названий, <locator role alternate field name> – это имя поля альтернативных данных, которое поддерживается ролью локатора таблицы альтернативных названий, <alternate data table> – это имя таблицы альтернативных названий, а <alternate data table field name> – имя поля в таблице альтернативных названий. Сопоставьте соответствующие поля для каждой таблицы в alternatename_tables.

Ниже показан пример alternate_field_mapping для alternatename_tables.

# <alternate name table role>.<locator role alternate field name> <alternate data table>.<alternate data table field name>
# This shows an example:
alternate_data__table_field_map =
"'AlternateStreetName.STREET_NAME_JOIN_ID altname.JOINID';"\
"'AlternateStreetName.STREET_PREFIX_DIR altname.PRE_DIR';"\
"'AlternateStreetName.STREET_PREFIX_TYPE altname.PRE_TYPE';"\
"'AlternateStreetName.STREET_NAME altname.ST_NAME';"\
"'AlternateStreetName.STREET_SUFFIX_TYPE altname.ST_TYPE';"\
"'AlternateStreetName.STREET_SUFFIX_DIR altname.SUF_DIR'"
Примечание:

Если данные нормализованы и первичная таблица не содержит названий города, а таблица альтернативных значений содержит, поле Primary Name Indicator может быть сопоставлено с полем таблицы альтернативных названий, которое содержит значение, указывающее, является ли запись первичным полем (например, True/False или Yes/No). Если это поле не сопоставлено, в качестве первичного значения будет использоваться первая запись в таблице альтернативных названий.

String
custom_output_fields
[custom_output_fields,...]
(Дополнительный)

Добавляет выходные поля к результатам геокодирования. Значения, указанные для этого параметра, будут определять имена выходных полей, возвращаемых в результатах геокодирования, однако, каждое новое поле должно быть сопоставлено с полем ваших базовых данных. Это новое выходное поле будет применяться для всех ролей, которые были использованы в локаторе. Если роль локатора имеет левую и правую стороны, к концу имен полей будут добавлены _left и _right.

Примечание:

Сначала вы должны включить имена пользовательских выходных полей в параметре field_mapping, затем перечислите имена в параметре custom_output_fields.

String
precision_type
(Дополнительный)

Задает точность локатора.

Примечание:

Локаторы, созданные с точностью GLOBAL_EXTRA_HIGH или LOCAL_EXTRA_HIGH можно использовать в ArcGIS Pro 2.6 или Enterprise 10.8.1 или в более поздних их версиях.

  • GLOBAL_EXTRA_HIGHТочность приблизительно 1 см, соответствует мировым стандартам.
  • GLOBAL_HIGH Точность приблизительно 0,5 м, соответствует мировым стандартам. Это значение по умолчанию.
  • LOCAL_EXTRA_HIGHПовышенная точность для локальных территорий.
String

Пример кода

CreateLocator, пример 1 (автономный скрипт)

В следующем скрипте Python показано, как использовать функцию CreateLocator в автономном скрипте.

# Description: Create a POI locator using a feature class in a file geodatabase 
#              that contains points of interest for Arts & Entertainment 
#              locations as reference data, where country_code and language_code 
#              are defined in the data. The new locator will be created in a 
#              file folder.
# Import system modules
import arcpy
# Set workspace
arcpy.env.workspace = "C:/Data/RhodeIsland"
# Set local variables:
primary_reference_data = "RI_Arts_POI POI"
field_mapping = "'POI.PLACE_NAME RI_Arts_POI.PLACE_NAME';"\
               "'POI.CATEGORY RI_Arts_POI.CATEGORY';"\
               "'POI.SUBCATEGORY RI_Arts_POI.SUBCATEGORY';"\
               "'POI.HOUSE_NUMBER RI_Arts_POI.HOUSE_NUMB';"\
               "'POI.STREET_NAME RI_Arts_POI.STREET_NAME';"\
               "'POI.NEIGHBORHOOD RI_Arts_POI.NEIGHBORHOOD';"\
               "'POI.CITY RI_Arts_POI.CITY_NAME';"\
               "'POI.SUBREGION RI_Arts_POI.SUBREGION';"\
               "'POI.REGION RI_Arts_POI.REGION_NAME';"\
               "'POI.POSTAL RI_Arts_POI.POSTAL_CODE';"\
               "'POI.COUNTRY_CODE RI_Arts_POI.COUNTRY_CODE';"\
               "'POI.LANG_CODE RI_Arts_POI.LANGUAGE_CODE';"\
               "'POI.RANK RI_Arts_POI.RANK'"
out_locator = "Arts_Entertainment_POIs"
# Execute CreateLocator
arcpy.geocoding.CreateLocator("AS_DEFINED_IN_DATA", primary_reference_data, field_mapping, 
                              out_locator, "AS_DEFINED_IN_DATA")
CreateLocator, пример 2 (окно Python)

Пример скрипта Python для использования функции CreateLocator в режиме прямого запуска.

# Description: Create a StreetAddress locator using a street centerline feature 
#              class in a file geodatabase as reference data, where multiple 
#              custom_output_fields are added to the locator for use in the 
#              geocode result. country_code and language_code are specified and 
#              will be applied to the entire reference dataset. The new locator 
#              will be created in a file folder.
# Import system modules
import arcpy
# Set workspace
arcpy.env.workspace = "C:/Data/Denver"
# Set local variables
country_code = "USA"
primary_reference_data = "Street_Centerline StreetAddress"
field_mapping = "'StreetAddress.HOUSE_NUMBER_FROM_LEFT Street_Centerline.L_F_ADD';"\
                "'StreetAddress.HOUSE_NUMBER_TO_LEFT Street_Centerline.L_T_ADD';"\
                "'StreetAddress.HOUSE_NUMBER_FROM_RIGHT Street_Centerline.R_F_ADD';"\
                "'StreetAddress.HOUSE_NUMBER_TO_RIGHT Street_Centerline.R_T_ADD';"\
                "'StreetAddress.STREET_PREFIX_DIR Street_Centerline.PREFIX';"\
                "'StreetAddress.STREET_PREFIX_TYPE Street_Centerline.TYPE';"\
                "'StreetAddress.STREET_NAME Street_Centerline.NAME';"\
                "'StreetAddress.STREET_SUFFIX_TYPE Street_Centerline.TYPE';"\
                "'StreetAddress.STREET_SUFFIX_DIR Street_Centerline.SUFFIX';"\
                "'StreetAddress.POSTAL_LEFT Street_Centerline.ZIPLEFT';"\
                "'StreetAddress.POSTAL_RIGHT Street_Centerline.ZIPRIGHT';"\
                "'StreetAddress.CustomField1_left Street_Centerline.LEFTFIRE';"\
                "'StreetAddress.CustomField1_right Street_Centerline.RTFIRE';"\
                "'StreetAddress.CustomField2_left Street_Centerline.LEFTEMS';"\
                "'StreetAddress.CustomField2_right Street_Centerline.RTEMS'"
out_locator = "DenverStreetsCustomFieldsLocator"
language_code = "ENG"
# Execute CreateLocator
arcpy.geocoding.CreateLocator(country_code, primary_reference_data, field_mapping, 
                              language_code, None, None, "CustomField1;CustomField2")
CreateLocator, пример 3 (окно Python)

Пример скрипта Python для использования функции CreateLocator в режиме прямого запуска.

# Create a StreetAddress locator using a street centerline feature class and an alternate
# name table, for alternate street names, in a file geodatabase as reference data. # The new locator will be created in a file folder.
# Import system modules import arcpy
# Set workspace arcpy.env.workspace = "C:/ArcTutor/Geocoding/Atlanta"
# Set local variables primary_reference_data = "streets StreetAddress"
field_mapping = "'StreetAddress.STREET_NAME_JOIN_ID streets.STREETID';"\                "'StreetAddress.HOUSE_NUMBER_FROM_LEFT streets.L_F_ADD';"\                "'StreetAddress.HOUSE_NUMBER_TO_LEFT streets.L_T_ADD';"\                "'StreetAddress.HOUSE_NUMBER_FROM_RIGHT streets.R_F_ADD';"\                "'StreetAddress.HOUSE_NUMBER_TO_RIGHT streets.R_T_ADD';"\                "'StreetAddress.STREET_PREFIX_DIR streets.PREFIX';"\                "'StreetAddress.STREET_PREFIX_TYPE streets.PRE_TYPE';"\                "'StreetAddress.STREET_NAME streets.NAME';"\                "'StreetAddress.STREET_SUFFIX_TYPE streets.TYPE';"\                "'StreetAddress.STREET_SUFFIX_DIR streets.SUFFIX';"\                "'StreetAddress.CITY_LEFT streets.CITYL';"\                "'StreetAddress.CITY_RIGHT streets.CITYR';"\                "'StreetAddress.REGION_LEFT streets.STATE_ABBR';"\                "'StreetAddress.REGION_RIGHT streets.STATE_ABBR';"\                "'StreetAddress.POSTAL_LEFT streets.ZIPL';"\                "'StreetAddress.POSTAL_RIGHT streets.ZIPR'"
alternatename_tables = "altname AlternateStreetName"
alternate_field_mapping = "'AlternateStreetName.STREET_NAME_JOIN_ID altname.STREETID';"\                          "'AlternateStreetName.STREET_PREFIX_DIR altname.PRE_DIR';"\                          "'AlternateStreetName.STREET_PREFIX_TYPE altname.PRE_TYPE';"\                          "'AlternateStreetName.STREET_NAME altname.ST_NAME';"\                          "'AlternateStreetName.STREET_SUFFIX_TYPE altname.ST_TYPE';"\                          "'AlternateStreetName.STREET_SUFFIX_DIR altname.SUF_DIR';"\                          "'AlternateStreetName.PRIMARY_NAME_INDICATOR altname.PRIMARY'"
out_locator = "AtlantaAlternateStreetsLocator"
# Execute CreateLocator arcpy.geocoding.CreateLocator("USA", primary_reference_data, field_mapping,                               out_locator, "ENG", alternatename_tables, 
                              alternate_field_mapping)
CreateLocator, пример 4 (автономный скрипт)

Пример скрипта Python для использования функции CreateLocator в режиме прямого запуска.

# Description: Create a multi-role locator (PointAddress & StreetAddress) using a hosted
# feature service from ArcGIS Online as reference data. # country_code and language_code
# are specified and will be applied to the entire reference dataset. # The new locator will be created in a file folder.
# Import system modules import arcpy
# Sign in to ArcGIS Online to use feature services as input arcpy.SignInToPortal("https://www.arcgis.com", "<username>", "<password>")
# Set local variables country = "USA"
in_table = "https://services.arcgis.com/<layer_id>/arcgis/rest/services/<service_name>/FeatureServer/<layer_number> PointAddress;"\           "https://services.arcgis.com/<layer_id>/arcgis/rest/services/<service_name>/FeatureServer/<layer_number> StreetAddress"
field_mapping = "'PointAddress.ADDRESS_JOIN_ID 0.PT_ADDR_ID';"\                "'PointAddress.HOUSE_NUMBER 0.ADDRESS';"\                "'PointAddress.STREET_NAME 0.ST_NAME';"\                "'PointAddress.SIDE 0.SIDE';"\                "'PointAddress.CITY 0.CITY';"\                "'PointAddress.REGION 0.STATE';"\                "'StreetAddress.HOUSE_NUMBER_FROM_LEFT 1.L_F_ADD_INT';"\                "'StreetAddress.HOUSE_NUMBER_TO_LEFT 1.L_T_ADD_INT';"\                "'StreetAddress.HOUSE_NUMBER_FROM_RIGHT 1.R_F_ADD_INT';"\                "'StreetAddress.HOUSE_NUMBER_TO_RIGHT 1.R_T_ADD_INT';"\                "'StreetAddress.STREET_PREFIX_DIR 1.PREFIX';"\                "'StreetAddress.STREET_PREFIX_TYPE 1.PRETYPE';"\                "'StreetAddress.STREET_NAME 1.NAME';"\                "'StreetAddress.STREET_SUFFIX_TYPE 1.TYPE';"\                "'StreetAddress.STREET_SUFFIX_DIR 1.SUFFIX';"\                "'StreetAddress.CITY_LEFT 1.PLACENAME_L';"\                "'StreetAddress.CITY_RIGHT 1.PLACENAME_R';"\                "'StreetAddress.REGION_LEFT 1.STATE';"\                "'StreetAddress.REGION_ABBR_LEFT 1.STATE_L';"\                "'StreetAddress.REGION_RIGHT 1.STATE';"\                "'StreetAddress.REGION_ABBR_RIGHT 1.STATE_R'"
out_locator = r"C:\output\locators\MultiroleFeatureServiceBasedLocator"
language = "ENG"
# Execute CreateLocator arcpy.geocoding.CreateLocator(country, in_table, field_mapping, out_locator, language)

Environments

Этот инструмент не использует параметры среды геообработки

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы