UWAGI API
Pola Geofield zawierają dziewięć kolumn informacji o przechowywanych danych geograficznych>. Jego sercem jest kolumna „wkt”, w której zapisano pełną geometrię w formacie „dobrze znanego tekstu” (WKT). Wszystkie pozostałe kolumny są metadanymi pochodzącymi z kolumny WKT. Kolumny są następujące:
„geom” Surowa wartość. Domyślnie przechowywane jako WKB, ładowane jako WKT
„typ geo” Typ geometrii (punkt, linia, wielokąt itp.)
„Lat” Centroid (szerokość geograficzna lub Y)
„lon” centroid (długość geograficzna lub X)
„góra” Obwiednia górna ( Szerokość lub Max Y) 'dolny' Obwiednia Dół (szerokość lub Min Y)
'left' Obwiednia lewo (długość lub MIN X)
'prawo' Obwiednia Right (długość lub Max X)
'geohash' Geohash odpowiednik wartości kolumny geom
Gdy pole geologiczne jest zapisywane przy użyciu dostarczonych widżetów, wartości te są przekazywane przez funkcję geofield_compute_values w celu obliczenia wartości zależnych. Domyślnie wartości zależne są obliczane na podstawie WKT, ale można to zmienić, aby obliczyć wartości na podstawie innych kolumn. Na przykład wartości geofield_compute_values można nazwać tak:
geofield_compute_values ($ wartości, „latlon”);
Spowoduje to obliczenie pola wkt (i wszystkich innych pól) na podstawie kolumn lat / lon, w wyniku czego powstanie punkt. Jako programista należy pamiętać, jeśli modyfikujesz informacje o polu geolokalizacyjnym za pomocą node_load i node_save. Upewnij się, aby uruchomić zmodyfikowane instancje geofield poprzez geofield_compute_values, aby wszystkie kolumny były spójne.
geohash
?geohash
, proszę, dziękuję.node__field_geo_field
mageohash
jako ostatnie pole (patrz API w odpowiedzi powyżej). To jest ascii reprezentacja regionu geograficznego . Nie wiem, czy są obowiązkowe czy opcjonalne, ale zamierzałem stworzyć program w języku Python, aby je wygenerować i wstawić (wraz z lat / long) do bazy danych drupal zaplecza.geohash
wartości, ale być może możesz użyćgeofield_compute_values
funkcji wymienionej w powyższej odpowiedzi, aby uzyskać tę wartość z lat / lng.Dzikie przypuszczenie: możesz poprowadzić swój węzeł przez
node-edit-form
proces, aby wystrzelić magię geofield.Spójrz na drupal_form_submit () , zwróć uwagę na
$form_state['values']
zwykłe, ręczne przesyłanie formularza „dodaj treść” swojego typu węzła i przebuduj go programowo, aby wysłać go wdrupal_form_submit()
funkcji.Zastanawiam się, czy to zadziała ...
Z drugiej strony możesz po prostu sprawdzić strukturę wartości swojego pola geologicznego i odbudować ją, programowo wykorzystując
geocoder()
funkcję interfejsu API modułu geokodera .źródło
Możesz użyć metody opisanej w https://www.drupal.org/node/905814#comment-4931016 .
Zrób kopię zapasową bazy danych
Wyświetl swoje treści. Dodaj filtr, aby wybrać treść, w której szerokość geograficzna pola geologicznego jest pusta.
Dodaj moduł Views Bulk Operations, dodaj pole operacji zbiorczych i wybierz jako akcję „wykonaj dowolne php”.
Podejście to działa doskonale, z wyjątkiem tego, że pola daty korzystające z wyskakującego okienka daty stają się puste, więc należy zachować ostrożność, jeśli istnieją pola daty.
Zauważ również, że geokoder Google ma 24-godzinny limit 2500 adresów do geokodu.
źródło
Istnieje moduł Drupal 7, który robi to dokładnie za Ciebie za pomocą crona. Możesz ustawić liczbę węzłów do przetworzenia na uruchomienie cron i wybrać typy zawartości, które mają być uruchamiane.
Sprawdź to: https://www.wutime.com/downloads/automatic-geofield-update-to-render-gmaps/
źródło