Примечания API
Поля Geofield содержат девять столбцов информации о географических> данных, которые хранятся. В основе лежит столбец «wkt», в котором хранится полная геометрия в формате «Хорошо известный текст» (WKT). Все остальные столбцы являются метаданными, полученными из столбца WKT. Столбцы следующие:
«geom» Сырье. По умолчанию хранится как WKB, загружается как WKT
'geo_type' Тип геометрии (точка, линейная линия, многоугольник и т. Д.)
' Lat ' Centroid (широта или Y)
'lon' Centroid (долгота или X)
'top' Bounding Box Top ( Широта или Макс. Y) «снизу» Ограничительная рамка Днище (Широта или Мин. Y)
«слева» Ограничительная рамка «Влево» (Долгота или Мин. X)
«Право» Ограничительная
рамка « Справа» (Долгота или Макс. X) «Геохэш» Геохэш-эквивалент значения столбца geom
Когда геополе сохраняется с использованием предоставленных виджетов, эти значения передаются через функцию geofield_compute_values для вычисления зависимых значений. По умолчанию зависимые значения вычисляются на основе WKT, но это может быть переопределено для вычисления значений на основе других столбцов. Например, geofield_compute_values можно назвать так:
geofield_compute_values ($ values, 'latlon');
Это вычислит поле wkt (и все остальные поля) на основе столбцов широта / долгота, в результате чего получится точка. Как разработчику, это важно помнить, если вы изменяете информацию о геополях, используя node_load и node_save. Обязательно запустите любые измененные экземпляры геополей через geofield_compute_values, чтобы все столбцы были согласованными.
geohash
?geohash
, пожалуйста, подтвердите, спасибо.node__field_geo_field
имеетgeohash
последнее поле (см. API в ответе выше). Это представление ascii географического региона . Я не знаю, являются ли они обязательными или необязательными, но я собирался создать программу на python, чтобы сгенерировать их и вставить (вместе с lat / long) в базу данных друпал-бэкэнда.geohash
значением, но, возможно, вы можете использоватьgeofield_compute_values
функцию, упомянутую в ответе выше, чтобы получить это значение из широты / долготы.Дикая догадка: вы можете запустить свой узел через
node-edit-form
процесс, чтобы запустить магию геополя.Взгляните на drupal_form_submit () , посмотрите на
$form_state['values']
обычную ручную отправку формы «добавить контент» вашего типа узла и программно пересоберите их для отправки вdrupal_form_submit()
функцию.Интересно, будет ли это работать ...
С другой стороны, вы могли бы просто проверить структуру стоимости вашего геополе и перестраивать , что программно усиливая
geocoder()
функцию в геокодере API модуля.источник
Вы можете использовать метод, описанный в https://www.drupal.org/node/905814#comment-4931016 .
Сделайте резервную копию базы данных
Сделайте просмотр вашего контента. Добавьте фильтр, чтобы выбрать контент, в котором широта геополя пуста.
Добавьте модуль Views Bulk Operations, добавьте поле массовых операций и выберите в качестве действия «выполнить произвольный php».
Этот подход работает отлично, за исключением того, что поля даты, использующие всплывающее окно даты, становятся пустыми, поэтому будьте осторожны, если у вас есть поля даты.
Также обратите внимание, что геокодер Google имеет ограничение в 2500 часов на геокодирование.
источник
Есть модуль Drupal 7, который делает именно это за вас, используя cron. Вы можете установить количество узлов для обработки за цикл cron и выбрать, какие типы контента использовать.
Проверьте это: https://www.wutime.com/downloads/automatic-geofield-update-to-render-gmaps/
источник