NOTES DE L'API
Les champs de champ géographique contiennent neuf colonnes d'informations sur les données géographiques stockées. Au cœur se trouve la colonne «wkt» où elle stocke la géométrie complète au format «Well Known Text» (WKT). Toutes les autres colonnes sont des métadonnées dérivées de la colonne WKT. Les colonnes sont les suivantes:
'geom' Valeur brute. Par défaut, stocké en tant que WKB, chargé en tant que WKT
'geo_type' Type de géométrie (point, chaîne de caractères, polygone, etc.)
Centroid 'lat' (Latitude ou Y)
Centroid 'lon' (Longitude ou X)
'top' Boîte de contour supérieure ( Latitude ou Max Y) 'bas' Bounding Box Bas (Latitude ou Min Y)
'gauche' Bounding Box Gauche (Longitude ou Min X)
'droite' Bounding Box Droite (Longitude ou Max X)
'geohash' Geohash équivalent de la valeur de la colonne geom
Lorsqu'un champ géographique est enregistré à l'aide des widgets fournis, ces valeurs sont transmises via la fonction geofield_compute_values afin de calculer les valeurs dépendantes. Par défaut, les valeurs dépendantes sont calculées sur la base de WKT, mais cela peut être remplacé pour calculer les valeurs sur la base d'autres colonnes. Par exemple, geofield_compute_values peut être appelé ainsi:
geofield_compute_values ($ values, 'latlon');
Cela calculera le champ wkt (et tous les autres champs) sur la base des colonnes lat / lon, résultant en un point. En tant que développeur, il est important de se souvenir si vous modifiez les informations du champ géographique à l'aide de node_load et node_save. Assurez-vous d'exécuter toutes les instances de champ géographique modifiées via geofield_compute_values afin de rendre toutes les colonnes cohérentes.
geohash
?geohash
, veuillez confirmer, merci.node__field_geo_field
a ungeohash
dernier champ (voir API dans la réponse ci-dessus). Il s'agit d'une représentation ascii d'une région géographique . Je ne sais pas s'ils sont obligatoires ou facultatifs, mais j'allais créer un programme python pour les générer et les insérer (avec lat / long) dans la base de données drupal backend.geohash
valeur, mais vous pouvez peut-être utiliser lageofield_compute_values
fonction mentionnée dans la réponse ci-dessus pour obtenir cette valeur à partir du lat / lng.Une supposition sauvage: vous pouvez exécuter votre nœud à travers le
node-edit-form
processus pour obtenir la magie du champ géographique.Jetez un oeil à drupal_form_submit () , observez le à
$form_state['values']
partir d'une soumission manuelle ordinaire du formulaire "ajouter du contenu" de votre type de nœud et reconstruisez-les par programme pour l'envoyer dans ladrupal_form_submit()
fonction.Je me demande si cela fonctionnerait...
D'un autre côté, vous pouvez simplement inspecter la structure de la valeur de votre champ géographique et reconstruire celle-ci en utilisant par programmation la
geocoder()
fonction de l' API du module de géocodeur .la source
Vous pouvez utiliser la méthode décrite dans https://www.drupal.org/node/905814#comment-4931016 .
Faites une sauvegarde de la base de données
Faites une vue de votre contenu. Ajoutez un filtre pour sélectionner le contenu où la latitude du champ géographique est vide.
Ajoutez le module Views Bulk Operations, ajoutez un champ d'opérations en bloc et choisissez comme action "exécuter un php arbitraire".
Cette approche fonctionne parfaitement, sauf que les champs de date qui utilisent l'affichage contextuel de date deviennent vides, alors faites attention si vous avez des champs de date.
Notez également que le géocodeur Google a une limite de 2400 adresses à géocoder 24h.
la source
Il y a un module Drupal 7 qui fait exactement cela pour vous en utilisant le cron. Vous pouvez définir le nombre de nœuds à traiter par exécution périodique et sélectionner les types de contenu contre lesquels il doit être déclenché.
Découvrez-le: https://www.wutime.com/downloads/automatic-geofield-update-to-render-gmaps/
la source