API NOTAS
Los campos de Geofield contienen nueve columnas de información sobre los datos geográficos que se almacenan. En su corazón está la columna 'wkt' donde almacena la geometría completa en el formato 'Texto bien conocido' (WKT). Todas las demás columnas son metadatos derivados de la columna WKT. Las columnas son las siguientes:
'geom' Valor bruto. De forma predeterminada, almacenado como WKB, cargado como WKT
'geo_type' Tipo de geometría (punto, cadena lineal, polígono, etc.)
'lat' Centroide (Latitud o Y)
'lon' Centroide (Longitud o X)
'top' Límite superior de la caja ( Latitud o Máx. Y 'inferior' Cuadro delimitador Inferior (Latitud o Mín. Y)
'izquierda' Cuadro delimitador Izquierda (Longitud o Mín. X)
'derecha' Cuadro delimitador Derecha (Longitud o Máx X)
'geohash' Geohash equivalente del valor de columna geom
Cuando se guarda un geofield utilizando los widgets proporcionados, estos valores se pasan a través de la función geofield_compute_values para calcular los valores dependientes. Por defecto, los valores dependientes se calculan en función de WKT, pero esto puede anularse para calcular valores basados en otras columnas. Por ejemplo, los valores de geofield_compute_values pueden llamarse así:
geofield_compute_values ($ valores, 'latlon');
Esto calculará el campo wkt (y todos los demás campos) en función de las columnas lat / lon, dando como resultado un punto. Como desarrollador, es importante recordar esto si modifica la información del geofield usando node_load y node_save. Asegúrese de ejecutar cualquier instancia de geofield modificada a través de geofield_compute_values para que todas las columnas sean consistentes.
geohash
?geohash
, confirma, gracias.node__field_geo_field
tiene ungeohash
como su último campo (ver API en la respuesta anterior). Esa es una representación ascii de una región geográfica . No sé si son obligatorios u opcionales, pero iba a hacer un programa de Python para generarlos e insertarlos (junto con lat / long) en la base de datos drupal de back-end.geohash
valor, pero quizás pueda usar lageofield_compute_values
función mencionada en la respuesta anterior para obtener ese valor de lat / lng.Una suposición descabellada: puede ejecutar su nodo a través del
node-edit-form
proceso para hacer que se dispare la geofield-magic.Eche un vistazo a drupal_form_submit () , observe el
$form_state['values']
envío manual y ordinario del formulario "agregar contenido" de su tipo de nodo y vuelva a generarlos mediante programación para enviarlo en ladrupal_form_submit()
función.Me pregunto si eso funcionaría ...
Por otro lado, puede inspeccionar la estructura del valor de su geocampo y reconstruirlo mediante el aprovechamiento programático de la
geocoder()
función de la API del módulo geocodificador .fuente
Puede usar el método descrito en https://www.drupal.org/node/905814#comment-4931016 .
Tomar una copia de seguridad de la base de datos
Haga una vista de su contenido. Agregue un filtro para seleccionar el contenido donde la latitud del geofield está vacía.
Agregue el módulo de Operaciones masivas de vistas, agregue un campo de operaciones masivas y elija como acción "ejecutar php arbitrario".
Este enfoque funciona perfectamente, excepto que los campos de Fecha que usan la pantalla emergente de fecha se vacían, así que tenga cuidado si tiene campos de fecha.
Tenga en cuenta también que el geocodificador de Google tiene un límite de 24 horas de 2500 direcciones para geocodificar.
fuente
Hay un módulo Drupal 7 que hace exactamente esto por ti usando el cron. Puede establecer el número de nodos para procesar por ejecución cron y seleccionar contra qué tipos de contenido se activará.
Compruébalo: https://www.wutime.com/downloads/automatic-geofield-update-to-render-gmaps/
fuente