Geocodificação

Um mapa coloca uma linha em sua latitude e longitude, que a maioria das linhas não possui. Registre o endereço de uma tabela com AddGeocoding, e as coordenadas das linhas são preenchidas a partir de seus endereços à medida que são criadas e atualizadas, pelo serviço de geocodificação, os nomes de configuração do portal.

Armazenando resultados geocodificados

Salvar coordenadas nos seus registros é armazenar os resultados de um geocodificador, e os termos dos provedores diferem nisso: alguns limitam quanto tempo os resultados podem ser mantidos, outros cobram pelos resultados armazenados, e outros permitem que sejam exibidos apenas em seus próprios mapas. O Power Portals Pro oferece apenas essa capacidade. Garantir que seu provedor, seu plano e seu uso dos resultados cumpram seus termos é sua responsabilidade.

Registro de um endereço

Contas e contatos têm um atalho cada um, para seu primeiro endereço: suas linhas, cidade, condado, estado ou província, código postal e país, para address1_latitude e address1_longitude.

Qualquer outra tabela nomeia suas colunas: as linhas da rua, a cidade, o condado, o estado ou província, o código postal e o país, cada uma uma coluna de texto, escolha ou consulta (o geocodificador lê o nome de uma escolha e o nome da consulta), e as colunas numéricas em que suas coordenadas vão aparecer.

O nome de um registro é verificado no Dataverse quando o portal começa: uma coluna que a tabela não tem, ou do tipo errado, impede que ele comece com uma mensagem nomeando a tabela e a coluna. Registrado duas vezes, o segundo registro de uma tabela substitui o primeiro.

O que uma defesa faz

  • Uma criação com um endereço é geocodificada. Uma atualização é geocodificada apenas quando altera o endereço: um save que envia o endereço novamente como estava, ou que altera apenas outras colunas, não pergunta a ninguém.
  • Uma atualização carrega apenas as colunas que altera, então o endereço geocodificado são as alterações sobrepostas ao endereço armazenado.
  • As coordenadas são enviadas na mesma salvação, independentemente de o usuário definir essas colunas ou não: a geocodificação roda como o usuário do app, depois que as verificações do usuário foram passadas (veja Interceptores). O endereço armazenado também é lido como o app, para o geocodificador, não para o usuário. Uma sessão que o próprio Dataverse garante (DataverseSecurity) é a exceção: ela é enviada para o Dataverse como seu usuário, então a segurança da própria coluna do Dataverse ainda se aplica às coordenadas.
  • Um save que define as coordenadas por conta própria, como um pino movido manualmente, mantém o seu.
  • Um save nunca é recusado para suas coordenadas. Um endereço encontrado em lugar nenhum, ou um que o serviço não pode ser consultado em até Geocoding:Timeout dez segundos por padrão), é salvo sem coordenadas, assim como um esvaziado, em vez de manter o endereço antes dele. Um aviso é registrado, sem o endereço.

Linhas salvas antes do registro da geocodificação mantêm as coordenadas que têm até que o endereço mude.

Provedores

O serviço é definido na PowerPortalsPro:Maps:Geocoding seção, exceto pelo provedor que desenha os mapas: Geocoding:Provider nomeia, e o provedor do mapa é usado quando não o faz.

  • Azure Maps (AzureMaps): perguntado como a identidade do portal, assim como seus mapas, então não é necessário nenhum sinal. Defina AzureMaps:ClientId; o papel Azure Maps Data Reader da identidade permite que ela pesquise.
  • Esri (Esri): pediu para armazenar seus resultados, o que o ArcGIS cobra. Sua chave, em Geocoding:ApiKey, precisa do privilégio de geocodificação e deve funcionar a partir do servidor, não apenas dos endereços do seu portal como a chave de um mapa.
  • Google (Google): um botão de entrada Geocoding:ApiKey com a API de Geocodificação que funciona a partir do servidor; a chave de um mapa, restrita aos endereços do seu portal, é recusada.
  • OpenStreetMap (OpenStreetMap): qualquer servidor Nominatim, o próprio do OpenStreetMap, a menos que Geocoding:Url nomeie outro, e o padrão quando nada nomeia um provedor. O servidor próprio do OpenStreetMap é solicitado no máximo uma vez por segundo, então os salvos esperam sua vez e um que espera mais do que Geocoding:Timeout o salvo sem coordenadas. Também quer saber quem está perguntando: defina Geocoding:UserAgent o nome do seu portal e uma forma de contatá-lo. Sua política de uso desencoraja a geocodificação regular por parte de um aplicativo, então use um servidor próprio em produção.

Uma vez que um endereço é registrado, as configurações são verificadas quando o portal inicia: um provedor sem o que precisa impede que ele comece com uma mensagem nomeando a configuração.

Um geocodificador próprio

Registre-se e IGeocoder para solicitar outro serviço. Ele recebe o endereço conforme sua linha o guarda, com uma forma de linha de ToString(), e retorna as coordenadas, ou nenhuma quando nada coincide; lançar o jogo salva a linha sem coordenadas.

Coordenadas sem geocodificação

Uma tabela cujas linhas obtêm suas coordenadas de outra forma registra apenas as colunas em que estão, com AddMapCoordinates, assim como AddGeocoding para a sua própria. Um mapa de várias tabelas então coloca as linhas da tabela com ForMaps() sozinha.