NOTAS DA API
Os campos de campo geográfico contêm nove colunas de informações sobre os dados geográficos armazenados. No centro, está a coluna 'wkt', onde ele armazena a geometria completa no formato 'Texto conhecido' (WKT). Todas as outras colunas são metadados derivados da coluna WKT. As colunas são as seguintes:
'geom' Valor bruto. Por padrão, armazenada como WKB, carregada como WKT
'geo_type' Tipo de geometria (ponto, cadeia de linhas, polígono etc.)
'lat' Centroid (Latitude ou Y)
'lon' Centroid (Longitude ou X)
'top' Caixa delimitadora Latitude ou Máx Y) 'inferior' Caixa delimitadora inferior (Latitude ou Min Y)
'esquerda' Caixa delimitadora esquerda (Longitude ou Min X)
'direita' Caixa delimitadora direita (Longitude ou Máx X)
'geohash' Geohash equivalente ao valor da coluna geom
Quando um geofield é salvo usando os widgets fornecidos, esses valores são transmitidos pela função geofield_compute_values para calcular valores dependentes. Por padrão, os valores dependentes são calculados com base no WKT, mas isso pode ser substituído para calcular valores com base em outras colunas. Por exemplo, geofield_compute_values pode ser chamado assim:
geofield_compute_values ($ values, 'latlon');
Isso calculará o campo wkt (e todos os outros campos) com base nas colunas lat / lon, resultando em um ponto. Como desenvolvedor, é importante lembrar se você modificar informações de campo geográfico usando node_load e node_save. Certifique-se de executar qualquer instância de campo geográfico modificado por meio de geofield_compute_values para tornar todas as colunas consistentes.
geohash
?geohash
, por favor confirme, obrigado.node__field_geo_field
temgeohash
como último campo (consulte API na resposta acima). Essa é uma representação ascii de uma região geográfica . Não sei se eles são obrigatórios ou opcionais, mas eu iria criar um programa python para gerá-los e inseri-los (junto com lat / long) no banco de dados drupal de back-end.geohash
valor, mas talvez você possa usar ageofield_compute_values
função mencionada na resposta acima para obter esse valor do lat / lng.Um palpite: você pode executar seu nó no
node-edit-form
processo para disparar a magia do campo geográfico.Dê uma olhada em drupal_form_submit () , observe a
$form_state['values']
partir de um envio manual comum do formulário "adicionar conteúdo" do tipo de nó e reconstrua-os programaticamente para enviá-lo nadrupal_form_submit()
função.Eu me pergunto se isso funcionaria ...
Por outro lado, você pode apenas inspecionar a estrutura do valor do seu campo geográfico e reconstruir isso programaticamente, aproveitando a
geocoder()
função da API do módulo geocoder .fonte
Você pode usar o método descrito em https://www.drupal.org/node/905814#comment-4931016 .
Faça um backup do banco de dados
Faça uma visualização do seu conteúdo. Adicione um filtro para selecionar o conteúdo em que a latitude do campo geográfico está vazia.
Adicione o módulo Views Bulk Operations, adicione um campo de operações em massa e escolha como ação "execute php arbitrário".
Essa abordagem funciona perfeitamente, exceto que os campos Data que estão usando a exibição do pop-up de data ficam vazios, portanto, tenha cuidado se você tiver campos de data.
Observe também que o geocoder do Google tem um limite de 24 horas de 2500 endereços para o geocode.
fonte
Existe um módulo Drupal 7 que faz exatamente isso para você usar o cron. Você pode definir o número de nós a serem processados por execução cron e selecionar quais tipos de conteúdo devem ser disparados.
Confira: https://www.wutime.com/downloads/automatic-geofield-update-to-render-gmaps/
fonte