Géocodage

Une carte place une ligne à sa latitude et longitude, ce que la plupart des lignes n’ont pas. Enregistrez l’adresse d’une table avec AddGeocoding, et les coordonnées de ses lignes sont remplies à partir de leurs adresses au fur et à mesure qu’elles sont créées et mises à jour, par le service de géocodage les noms de configuration du portail.

Stockage des résultats géocodés

Sauvegarder les coordonnées sur vos enregistrements revient à stocker les résultats d’un géocodeur, et les conditions des fournisseurs diffèrent à ce sujet : certains limitent la durée de conservation des résultats, d’autres facturent les résultats stockés, et d’autres encore ne permettent qu’ils soient affichés uniquement sur leurs propres cartes. Power Portals Pro ne fournit que cette fonctionnalité. Veiller à ce que votre fournisseur, votre forfait et votre utilisation des résultats respectent ses conditions est votre responsabilité.

Enregistrement d’une adresse

Les comptes et contacts ont chacun un raccourci pour leur première adresse : ses lignes, ville, comté, État ou province, code postal et pays, vers address1_latitude et address1_longitude.

Tout autre tableau nomme ses colonnes : les lignes de la rue, la ville, le comté, l’État ou la province, le code postal et le pays, chacun une colonne de texte, de choix ou de recherche (le géocodeur lit l’étiquette d’un choix et le nom d’une requête), ainsi que les colonnes de chiffres dans lesquelles se trouvent ses coordonnées.

Ce qu’un enregistrement nomme est vérifié contre Dataverse au début du portail : une colonne que la table n’a pas, ou du mauvais type, l’empêche de commencer par un message nommant la table et la colonne. Enregistrée deux fois, la deuxième inscription d’une table remplace la première.

Ce qu’un arrêt fait

  • Une création avec une adresse est géocodée. Une mise à jour n’est géocodée que lorsqu’elle change l’adresse : une sauvegarde qui renvoie l’adresse telle qu’elle était, ou ne modifie que d’autres colonnes, ne demande à personne.
  • Une mise à jour ne porte que les colonnes qu’elle modifie, donc l’adresse géocodée correspond à ces changements posés sur l’adresse stockée.
  • Les coordonnées s’affichent dans la même sauvegarde, que l’utilisateur puisse ou non définir ces colonnes : le géocodage s’exécute en tant qu’utilisateur de l’application, une fois les vérifications de l’utilisateur passées ( voir Intercepteurs). L’adresse stockée est également lue comme l’application, pour le géocodeur, pas pour l’utilisateur. Une session que Dataverse sécurise lui-même (DataverseSecurity) fait exception : elle est envoyée à Dataverse en tant qu’utilisateur, donc la sécurité de la colonne propre à Dataverse s’applique toujours aux coordonnées.
  • Une sauvegarde qui définit elle-même les coordonnées, comme une épingle déplacée à la main, conserve la sienne.
  • Une sauvegarde n’est jamais refusée pour ses coordonnées. Une adresse trouvée nulle part, ou une adresse dont le service ne peut pas être sollicité dans Geocoding:Timeout les dix secondes par défaut, est sauvegardée sans coordonnées, tout comme une coordonnée vide, au lieu de conserver la place de l’adresse avant. Un avertissement est enregistré, sans l’adresse.

Les lignes sauvegardées avant l’enregistrement du géocodage conservent les coordonnées qu’elles ont jusqu’à ce que leur adresse change.

Fournisseurs

Le service est défini dans la PowerPortalsPro:Maps:Geocoding section, à l’exception du fournisseur qui dessine les cartes : Geocoding:Provider il les nomme, et le fournisseur de la carte est utilisé lorsqu’il ne le fait pas.

  • Azure Maps (AzureMaps) : demandé comme l’identité propre du portail, comme ses cartes, donc aucune clé n’est nécessaire. Définir AzureMaps:ClientId; le rôle Azure Maps Data Reader de l’identité lui permet de rechercher.
  • Esri (Esri) : a demandé de stocker ses résultats, ce qu’ArcGIS facture. Sa clé, dans Geocoding:ApiKey, nécessite le privilège de géocodage et doit fonctionner depuis le serveur, pas seulement depuis les adresses de votre portail comme le fait la clé d’une carte.
  • Google (Google) : une clé d’entrée Geocoding:ApiKey avec l’API de géocodage qui fonctionne depuis le serveur ; une clé de carte, limitée aux adresses de votre portail, est refusée.
  • OpenStreetMap (OpenStreetMap) : n’importe quel serveur Nominatim, celui d’OpenStreetMap sauf si Geocoding:Url un autre n’en nomme, et par défaut quand rien ne nomme un fournisseur. Le serveur d’OpenStreetMap est sollicité au maximum une fois par seconde, donc les sauvegardes attendent immédiatement leur tour, et celles qui attendent plus longtemps que Geocoding:Timeout celles enregistrées sans coordonnées. Il veut aussi savoir qui demande : définir Geocoding:UserAgent le nom de votre portail et un moyen de vous contacter. Sa politique d’utilisation décourage le géocodage régulier par une application, donc utilisez votre propre serveur en production.

Une fois une adresse enregistrée, les paramètres sont vérifiés au démarrage du portail : un fournisseur sans ce dont il a besoin l’empêche de commencer par un message nommant le paramètre.

Un géocodeur à toi

Enregistrer et IGeocoder demander un autre service. Il reçoit l’adresse telle que sa ligne la contient, avec une forme à une ligne de ToString(), et retourne les coordonnées, ou aucune lorsque rien ne correspond ; lancer sauvegarde la ligne sans coordonnées.

Coordonnées sans géocodage

Une table dont les lignes obtiennent leurs coordonnées d’une autre manière ne registre que les colonnes dans lesquelles elles se trouvent, avec AddMapCoordinates, tout comme AddGeocoding pour la sienne. Une carte de plusieurs tables place alors les lignes de la table avec ForMaps() seules.