CATATAN API
Bidang Geofield berisi sembilan kolom informasi tentang data geografis> yang disimpan. Pada intinya adalah kolom 'wkt' di mana ia menyimpan geometri penuh dalam format 'Teks Terkenal' (WKT). Semua kolom lainnya adalah metadata yang berasal dari kolom WKT. Kolom adalah sebagai berikut:
Nilai mentah 'geom'. Secara default, disimpan sebagai WKB, dimuat sebagai WKT
'geo_type' Jenis geometri (titik, linestring, poligon, dll.)
'Lat' Centroid (Latitude atau Y)
'lon' Centroid (Longitude atau X)
'top' Bounding Box Top ( Latitude atau Max Y) 'bawah' Bounding Box Bawah (Latitude atau Min Y)
'kiri' Bounding Box Kiri (Bujur atau Min X)
'kanan' Bounding Box Kanan (Bujur atau Maks X)
'geohash' Geohash setara dengan nilai kolom geom
Ketika geofield disimpan menggunakan widget yang disediakan, nilai-nilai ini dilewatkan melalui fungsi geofield_compute_values untuk menghitung nilai dependen. Secara default, nilai-nilai dependen dihitung berdasarkan WKT, tetapi ini mungkin ditimpa untuk menghitung nilai berdasarkan kolom lain. Misalnya, geofield_compute_values dapat dipanggil seperti ini:
geofield_compute_values ($ values, 'latlon');
Ini akan menghitung bidang wkt (dan semua bidang lainnya) berdasarkan pada kolom lat / lon, menghasilkan suatu titik. Sebagai pengembang, ini penting untuk diingat jika Anda mengubah informasi geofield menggunakan node_load dan node_save. Pastikan untuk menjalankan instans geofield yang dimodifikasi melalui geofield_compute_values untuk membuat semua kolom konsisten.
geohash
?geohash
, mohon konfirmasi, terima kasih.node__field_geo_field
memilikigeohash
sebagai bidang terakhirnya (lihat API pada jawaban di atas). Itu adalah representasi ascii dari wilayah geografis . Saya tidak tahu apakah mereka wajib atau opsional, tapi saya akan membuat program python untuk menghasilkan mereka dan memasukkan (bersama dengan lat / long) ke dalam database backup drupal.geohash
nilai, tetapi mungkin Anda dapat menggunakangeofield_compute_values
fungsi yang disebutkan dalam jawaban di atas untuk mendapatkan nilai dari lat / lng.Tebakan liar: Anda dapat menjalankan node Anda melalui
node-edit-form
proses untuk mendapatkan geofield-magic dipecat.Lihat drupal_form_submit () , amati
$form_state['values']
dari pengajuan manual, biasa dari bentuk "tambah konten" jenis simpul Anda dan bangun kembali secara terprogram untuk mengirimkannya dalamdrupal_form_submit()
fungsi.Aku ingin tahu apakah itu akan berhasil ...
Di sisi lain, Anda hanya dapat memeriksa struktur nilai geofield Anda dan membangunnya kembali yang secara terprogram meningkatkan
geocoder()
fungsi API modul geocoder .sumber
Anda dapat menggunakan metode yang dijelaskan dalam https://www.drupal.org/node/905814#comment-4931016 .
Ambil cadangan basis data
Lihat konten Anda. Tambahkan filter untuk memilih konten di mana lintang geofield kosong.
Tambahkan modul Operasi Tampilan Massal, tambahkan bidang operasi massal dan pilih sebagai tindakan "jalankan arbitrer php".
Pendekatan ini berfungsi dengan baik kecuali bidang Tanggal yang menggunakan tampilan sembulan tanggal menjadi kosong, jadi berhati-hatilah jika Anda memiliki bidang tanggal.
Perhatikan juga bahwa geocoder Google memiliki batas 24 jam dari 2.500 alamat ke geocode.
sumber
Ada modul Drupal 7 yang melakukan hal yang tepat untuk Anda menggunakan cron. Anda dapat mengatur jumlah node yang akan diproses per cron run, dan pilih jenis konten apa yang akan dilawan.
Lihat ini: https://www.wutime.com/downloads/automatic-geofield-update-to-render-gmaps/
sumber