Suite

Créer une géométrie à partir de lat/lon dans une table à l'aide de PostGIS ?

Créer une géométrie à partir de lat/lon dans une table à l'aide de PostGIS ?


J'ai une table avec plus de 800 000 enregistrements, y compris une colonne lat et longue. La source de données n'a pas créé de géométries, j'ai donc cherché comment faire cela. Je sais qu'il y a ST_MakePoint(x,y,SRID) mais toute la documentation et les autres threads montrent comment créer des points uniques. Comment créer le type de géométrie à l'aide de ces colonnes ?


Les versions plus récentes de PostGIS autorisent la syntaxe suivante, légèrement plus courante :

ALTER TABLE your_table ADD COLUMN geom geometry(Point, 4326);

Utilisez ensuite ST_SetSrid et ST_MakePoint pour remplir la colonne :

MISE À JOUR your_table SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);

Voir la documentation ici :


Si vous n'avez pas encore ajouté de colonne de géométrie (en supposant EPSG:4326 ici) :

SELECT AddGeometryColumn ('votre_table','geom',4326,'POINT',2) ;

PuisMETTRE À JOUR, en passant les noms de vos champs x et y :

UPDATE yourtable SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);

Cela mettra à jour l'ensemble du tableau, sauf si vous incluez unclause

Référence à ST_SetSrid : https://postgis.net/docs/ST_SetSRID.html


Utilisation de PostGIS "contains(geom1, geom2)" dans les vues

J'ai travaillé sur l'intégration de Views et PostGIS, en particulier les zones de confinement spatial et les agrégats spatiaux.

Récemment, j'ai fait de gros progrès pour comprendre comment cela pourrait fonctionner dans Views, et j'ai pensé partager mes découvertes ici. Si le confinement est récemment entré dans le noyau et ne nécessite plus de codage, pardonnez-moi. Sinon, je pense que cette enquête peut jeter les bases d'un confinement spatial (et plus tard d'agrégats spatiaux) créé automatiquement dans l'interface utilisateur de Views. Pour le moment, cela est codé en dur pour ajouter la clause WHERE de confinement et les ajouts ON, mais le chemin me semble maintenant assez simple. Cette approche a été développée avec l'aide de certaines personnes sur les forums (https://drupal.org/node/2154761).

Objectif: Je fais une "jointure spatiale" en utilisant deux colonnes géométriques (un point et un polygone) pour déterminer si deux nœuds séparés se croisent dans le même espace. J'ai les géométries stockées dans des tables séparées.

Méthode: J'ai créé un module personnalisé pour insérer les conditions spatiales souhaitées dans les requêtes construites dans une vue spécifique. Mon nom de module est "wsp_devel", bien que cela soit sans importance.

Lecture de fond : Cette approche était largement basée sur le module personnalisé « Exemple de nœud » défini ici : http://views-help.doc.logrus.com/help/views/api-example - Les informations de ce didacticiel peuvent être utilisées pour indiquer à Views comment pour joindre automatiquement des tables avec des colonnes de géométrie en utilisant les conditions spatiales illustrées ci-dessous.

  • 'node' - Ma table de base
  • 'data_node_point' - une table avec un NID qui fait référence et a une géométrie de point (essentiellement une latitude et une longitude)
  • 'data_node_coverage' - Une table avec un entity_id (également une référence nid) et une géométrie multi-polygone (une zone spatiale en 2 dimensions)
  • 'wsp_sysloc_cache' -

il s'agit d'une autre table qui contient des informations jointes dans les vues, mais elle n'est pas utilisée dans la partie spatiale de la requête (mais elle apparaît dans l'extrait SQL ci-dessous)

  1. Je joins la table de points 'data_node_point' à 'node' via les colonnes 'nid' correspondantes - j'utilise la fonction "$query->addRelationship" pour me permettre de rejoindre la table 'data_node_point' plus tard.
  2. J'ajoute des colonnes de 'data_node_point' - 'nid' et 'the_geom'
  3. Je joins la table 'data_node_coverage' à 'data_node_point' via un opérateur de confinement spatial - si le lat/lon dans 'data_node_point' se trouve à l'intérieur des limites de 'data_node_coverage' alors je l'inclus.
  4. Je sélectionne les géométries nulles qui indiqueraient que le nœud d'origine n'a pas d'entrée dans la table de points ou aucune couverture de chevauchement.

Code de module personnalisé views_query_alter

La requête qui en résulte (lors de la transmission d'un nid pour un seul nœud de couverture) :


GéoGestionnaire ¶

Afin de mener des requêtes géographiques, chaque modèle géographique nécessite un GéoGestionnaire gestionnaire de modèles. Ce gestionnaire permet la construction SQL appropriée pour les requêtes géographiques ainsi, sans lui, tous les filtres géographiques échoueront. Il faut aussi noter que GéoGestionnaire est nécessaire même si le modèle n'a pas de champ géographique lui-même, par exemple, dans le cas d'un Clé étrangère relation avec un modèle avec un champ géographique. Par exemple, si nous avions un Adresse modèle avec un Clé étrangère à notre Code postal maquette:

Le gestionnaire géographique est nécessaire pour effectuer des requêtes spatiales sur les Code postal objets, par exemple :


Comprend une large gamme de composants :

Composants pour les calculs spatiaux :

dAreaCalculateur Ce composant prend en entrée une géométrie polygonale et calcule son aire.
dCoordinateFetcher Ce composant récupère les coordonnées d'un point bidimensionnel ou tridimensionnel. Dans le cas d'un système de coordonnées géographiques, il récupère la longitude et la latitude. Sinon, il récupère les valeurs d'abscisse et d'ordonnée.
dLengthCalculator Ce composant calcule la longueur d'une ligne ou la longueur totale du contour d'un polygone.

Composants développés pour l'optimisation de la qualité des données :

dGeometryValidator Ce composant prend une géométrie d'entrée et la valide. Elle renvoie une valeur booléenne, true si la géométrie est valide, sinon elle renvoie false.

Composants développés pour l'utilisation des bases de données Oracle et une conversion plus rapide des données :


Utilisez les données cartographiques en direct HERE HD pour vérifier les configurations de voies

Cet exemple montre comment lire et visualiser les configurations de voies pour un itinéraire de conduite enregistré à partir du service HERE HD Live Map (HERE HDLM). Cette visualisation peut être utilisée pour vérifier les configurations de voies détectées par le système de perception d'un capteur embarqué, tel qu'une caméra monoculaire.

Dans cet exemple, vous apprenez à accéder aux couches tuilées à partir du service HDLM et à identifier la topologie, la géométrie et les attributs pertinents au niveau de la route et de la voie.

Pour lire les données, vous utilisez un objet hereHDLMReader. L'utilisation du service HERE HD Live Map nécessite des identifiants HERE HDLM valides. Vous devez conclure un accord séparé avec HERE afin d'accéder aux services HDLM et d'obtenir les informations d'identification requises (access_key_id et access_key_secret) pour utiliser le service HERE.

Aperçu

Les cartes haute définition (HD) font référence aux services de cartographie développés spécifiquement pour les applications de conduite automatisée. La géométrie précise de ces cartes (avec une résolution allant jusqu'à 1 cm près de l'équateur) les rend adaptées aux flux de travail de conduite automatisés au-delà des applications de planification d'itinéraire des cartes routières traditionnelles. Ces flux de travail incluent la vérification au niveau des voies, la localisation et la planification des chemins. Cet exemple vous montre comment vérifier les performances d'un système de détection de voie à l'aide des informations au niveau de la voie à partir des données cartographiques HD.

La précision des données cartographiques HD permet leur utilisation comme source de données de vérité terrain pour la vérification des systèmes de perception des capteurs embarqués. Cette haute précision permet une vérification plus rapide et plus précise des algorithmes déployés existants.

HERE HD Live Map (HERE HDLM) est un service de cartographie HD basé sur le cloud développé par HERE Technologies pour prendre en charge la conduite hautement automatisée. Les données sont composées de couches cartographiques en mosaïque qui donnent accès à une géométrie précise et à des attributs robustes d'un réseau routier. Les couches sont regroupées dans les modèles suivants :

Modèle d'axe de route : Fournit la topologie de la route (spécifiée en tant que nœuds et liens dans un graphique), la géométrie de la forme et d'autres attributs au niveau de la route.

Modèle de voie HD : Fournit une topologie de voies (sous forme de groupes de voies et de connecteurs de groupes de voies), une géométrie très précise et des attributs au niveau des voies.

Modèle de localisation HD : Fournit des fonctionnalités pour prendre en charge les stratégies de localisation des véhicules.

Pour un aperçu des couches HERE HDLM, voir HERE HD Live Map Layers.

Les caméras sont utilisées dans la conduite automatisée pour recueillir des informations sémantiques sur la topologie de la route autour du véhicule. Les algorithmes de détection des limites de voies, de classification des types de voies et de détection des panneaux de signalisation constituent le cœur d'un tel pipeline de traitement de caméras. Vous pouvez utiliser le service HERE HDLM, ainsi qu'un GPS de haute précision monté sur le véhicule, pour évaluer la précision de ces algorithmes et vérifier leurs performances.

Dans cet exemple, vous apprenez à :

Lisez les informations sur les routes et les voies du service HERE HDLM pour une séquence GPS enregistrée.

Appliquez une approche de correspondance d'itinéraire heuristique aux données GPS enregistrées. Les données GPS étant souvent imprécises, il est nécessaire de résoudre le problème de la mise en correspondance des coordonnées géographiques enregistrées avec une représentation du réseau routier.

Identifier les attributs environnementaux pertinents pour le véhicule. Une fois qu'un véhicule est localisé avec succès dans le contexte de la carte, vous pouvez utiliser les attributs de route et de voie pertinents pour le véhicule pour vérifier les données enregistrées par le capteur de la caméra embarquée du véhicule.

Charger et afficher les données de la caméra et du GPS

Commencez par charger les données du lecteur enregistré. Les données enregistrées dans cet exemple proviennent d'un ensemble de données de conduite collectées par l'équipe Udacity® Self-Driving Car. Ces données comprennent une vidéo capturée par une caméra monoculaire frontale et les positions et vitesses du véhicule enregistrées par un GPS.


Tâches de plug-in

Les tâches suivantes sont contenues dans des plugins.

Ils peuvent être ajoutés à osmose en installant le plugin spécifié dans l'un des chemins ci-dessous ou en l'ajoutant à la ligne de commande via l'option "-P".

Pour installer ces tâches, copiez le fichier zip spécifié dans

Pour écrire vos propres plugins, voir Osmosis/WritingPlugins.

--write-osmbin-0.6

  • plugin-zip : libosm_osmose_plugins.zip (Partie de Voyageur de commerce)
  • télécharger : Voyageur de commerce sur Sourceforge (bientôt)
  • documentation : Voyageur de commerce - Wiki

Tuyau La description
dansPipe.0 Consomme un flux d'entité.

Option La description Valeurs valides Valeur par défaut
réal Le nom du répertoire dans lequel écrire. Sera créé si besoin. Ajoutera/mettra à jour si osmbin-data existe. Tout nom de répertoire valide. rien

  • java -classpath lib/jpf.jar:lib/commons-logging-1.0.4.jar:lib/osmosis.jar org.openstreetmap.osmosis.core.Osmosis --read-xml file="../Desktop/hamburg. osm.bz2" --write-osmbin-0.6 dir="../osmbin-map"

--dataset-osmbin-0.6

Lire et écrire depuis/vers un répertoire dans Osmbin version 1.0 et lui fournir un accès aléatoire pour d'autres tâches

cette tâche n'est pas encore terminée. Il fournit un accès aléatoire mais les méthodes en bloc iterate() et iterateBoundingBox() ne sont pas encore implémentées.

Tuyau La description
dansPipe.0 Consomme un flux d'entité.

Option La description Valeurs valides Valeur par défaut
réal Le nom du répertoire dans lequel écrire. Sera créé si besoin. Ajoutera/mettra à jour si osmbin-data existe. Tout nom de répertoire valide. rien

  • java -classpath lib/jpf.jar:lib/commons-logging-1.0.4.jar:lib/osmosis.jar org.openstreetmap.osmosis.core.Osmosis --read-xml file="../Desktop/hamburg. osm.bz2" --dataset-osmbin-0.6 dir="../osmbin-map"

--reindex-osmbin-0.6

Recréez le fichier .idx pour un répertoire dans Osmbin version 1.0

  • plugin-zip : libosm_osmose_plugins.zip (Partie de Voyageur de commerce)
  • télécharger : Voyageur de commerce sur Sourceforge
  • documentation : Voyageur de commerce - Wiki
  • cette tâche peut également être exécutée de manière autonome. comme java -jar libosm.jar org.openstreetmap.osm.data.osmbin.v1_0.OsmBinV10Reindexer (nom du répertoire)

Option La description Valeurs valides Valeur par défaut
réal Le nom du répertoire à réindexer. Tout nom de répertoire valide. rien

--read-osmbin-0.6

Lire à partir d'un répertoire au format Osmbin version 1.0.

plugin-zip : TravelingSalesman_OsmosisPlugins.zip

Tuyau La description
outPipe.0 Crée un flux d'entité.

Option La description Valeurs valides Valeur par défaut
réal Le nom du répertoire à lire. Tout nom de répertoire valide. rien

--induce-ways-for-turnrestrictions (-iwtt)

Convertissez toutes les intersections avec des restrictions de virage à partir d'un nœud en un nombre équivalent de rues à sens unique qui ne peuvent être parcourues que conformément à la restriction de virage. Ceci est censé être une étape de prétraitement pour les routeurs qui ne peuvent pas gérer les restrictions/coûts sur les nœuds de graphe.

plugin-zip : TravelingSalesman_OsmosisPlugins.zip

--simplifier

Le plugin simplifie les filtres pour supprimer certains éléments afin de simplifier les données. Actuellement, il s'agit d'une forme de simplification extrêmement grossière. Il supprime tous les nœuds à l'exception des nœuds de début et de fin dans tous les sens.

La tâche de simplification actuelle ne prend aucune option


Intégration de fonctionnalités à partir de SQL Server Spatial

AutoCAD Map 3D prend en charge à la fois SQL Server et SQL Server Spatial.

Pour SQL Server Spatial, AutoCAD Map 3D prend en charge les données SQL Server Spatial natives avec SQL Server 2008 R2. Si vous utilisez SQL Server 2008, nous vous recommandons d'utiliser le fournisseur SQL Server Spatial. Bien que le fournisseur SQL Server Spatial ne lise pas les magasins de données créés par l'ancien fournisseur SQL Server, vous pouvez utiliser la copie en bloc pour déplacer les données dans ce format.

Lorsque vous affichez et modifiez des fonctionnalités à partir d'une source de données SQL Server Spatial, vous pouvez effectuer les opérations suivantes :

  • Utilisez l'authentification Windows ou SQL Server.
  • Sélectionnez les classes d'entités à inclure dans votre carte. Pour les entités avec plusieurs propriétés géométriques, spécifiez les géométries à inclure.
  • Définissez des conditions pour limiter les entités de votre carte.
  • Style, thème et modifier les fonctionnalités.
  • Mettez automatiquement à jour la source de données avec toutes les modifications que vous apportez.

Vos modifications sont immédiatement visibles pour toute autre personne utilisant la source de données.

Une colonne de type géographique est créée pour le système de coordonnées géodésiques. Pour les autres systèmes, une colonne de type géométrique est créée. Les index spatiaux sont créés automatiquement pour ces propriétés géométriques à l'aide des paramètres d'index spatiaux par défaut. Vous pouvez remplacer les valeurs par défaut à l'aide de l'API.

Vous pouvez inclure des métadonnées FDO lorsque vous créez un magasin de données SQL Server.

Si vous fermez un dessin qui utilise une connexion SQLServerSpatial, puis rouvrez ce dessin, vous devrez d'abord vous reconnecter à la connexion SQLServerSpatial et fournir votre nom d'utilisateur et votre mot de passe. Cette information n'est pas mémorisée une fois le dessin fermé.

Gérer une géométrie invalide

SQL Server Spatial valide les objets géométriques ajoutés à la base de données. Il valide les valeurs des colonnes de géométrie après leur ajout. Par conséquent, certaines géométries sont signalées comme non valides, même si elles sont enregistrées. Cela affecte généralement les polygones (par exemple, les polygones qui ne sont pas fermés) et les pointes de géométrie. La validation est basée sur les règles de l'OGC.

L'interrogation de géométries non valides à l'aide d'un filtre spatial (par exemple, à l'aide d'une expression) génère une erreur et la requête échoue. Cela affecte SQL Server géométrie (mais pas SQL Server la géographie).

Le fournisseur FDO pour SQL Server Spatial utilise le la géographie type de données pour les systèmes de coordonnées latitude/longitude et le géométrie type de données pour tous les autres. Le type de données géographie ne conserve pas les valeurs géométriques non valides et les rejette immédiatement. Il ne prend pas en charge les fonctions STIsValid() ou IsValid(geometry) décrites ci-dessous.

Comment la géométrie non valide est gérée

Le fournisseur FDO pour SQL Server Spatial reconnaît que des géométries non valides peuvent exister dans une table en cours de traitement. Le fournisseur inclut du code pour éviter que les requêtes échouent, en utilisant les stratégies suivantes :

  • Une requête sans filtre spatial renvoie toutes les données.
  • Une requête avec un filtre spatial ignore les géométries non valides afin que la requête n'échoue pas complètement. Les géométries valides correspondant au filtre spatial sont renvoyées.
  • Une requête utilisant le filtre FDO EnvelopeIntersects n'ignore pas les géométries non valides si un index spatial est inclus dans la colonne de géométrie. Dans cette combinaison de cas particulier, SQL Server Spatial n'échoue pas sur la requête car il ne traite pas les détails de la géométrie. Infrastructure Map Server utilise ce type de filtre comme filtre de sélection par défaut.

AutoCAD Map 3D et Infrastructure Map Server peuvent dessiner ces géométries non valides sans problème.

Utilisation d'expressions pour rechercher une géométrie non valide

SQL Server fournit une fonction appelée STIsValid() qui renvoie 1 pour les géométries valides et 0 pour les géométries non valides. FDO expose l'accès à cette fonction à l'aide d'une fonction appelée IsValid(geometry) au niveau FDO. Vous pouvez utiliser cette fonction dans AutoCAD Map 3D et Infrastructure Map Server lorsque vous créez une expression pour filtrer ou sélectionner des données. Si vous sélectionnez des données sans filtre ou en utilisant uniquement le filtre EnvelopeIntersects, vous pouvez créer une propriété calculée dans la table de données à l'aide de la fonction IsValid pour voir quelles géométries sont valides ou non valides.

Correction d'une géométrie invalide

SQL Server Spatial fournit également une fonction que vous pouvez utiliser pour corriger les géométries non valides sur le serveur. Vous ne pouvez pas utiliser cette fonction à partir d'AutoCAD Map 3D et d'Infrastructure Map Server , mais vous pouvez l'utiliser directement avec SQL Server, par exemple, à l'aide de Management Studio. Voici un exemple de cette méthode :

mettre à jour dbo.road set geom = geom.MakeValid() où geom.STIsValid() = 0

Cette opération rend la géométrie valide en modifiant ses parties invalides. Vous préférerez peut-être modifier la géométrie vous-même plutôt que d'utiliser une correction par défaut avec des résultats incertains.

Pour plus d'informations sur les fonctions STIsValid() et MakeValid(), ainsi que sur d'autres aspects de SQL Server Spatial, consultez la documentation en ligne de SQL Server Spatial.

Pour importer des fonctionnalités de SQL Server Spatial

  1. Dans le Gestionnaire d'affichage , cliquez sur Données Se connecter aux données .
  2. Dans la fenêtre Connexion aux données, sélectionnez Ajouter une connexion spatiale SQL Server dans la liste Connexions aux données par fournisseur.
  3. Sous Nom de la connexion , saisissez un nom pour cette connexion.

Vous pouvez donner à la connexion le nom de votre choix. Ce nom apparaît dans Map Explorer comme nom de la source d'objets.

Le nom du service est défini lorsque vous installez SQL Server Spatial lui-même.

  • Pour utiliser vos informations d'identification d'authentification Windows, sélectionnez Authentification Windows et cliquez sur Connexion .
  • Pour utiliser vos identifiants de connexion SQL Server, saisissez votre nom d'utilisateur et votre mot de passe et cliquez sur Connexion .

Pour sélectionner dans une liste de magasins de données, cliquez sur la flèche vers le bas. AutoCAD Map 3D se connecte au serveur et à l'instance spécifiés et répertorie les magasins de données disponibles.

Si cette source d'objets ne contient qu'une seule classe d'objets, cette classe d'objets est sélectionnée automatiquement. S'il contient plusieurs classes d'entités, vous pouvez effectuer l'une des opérations suivantes :

  • Cliquez avec le bouton droit sur l'entrée du schéma et sélectionnez Tout sélectionner ou Tout sélectionner .
  • Développez l'entrée de schéma et sélectionnez les classes d'entités à ajouter.

Si une classe d'entités contient plusieurs types de géométrie et que vous sélectionnez la classe d'entités elle-même, toutes les géométries sont ajoutées. Pour ajouter un sous-ensemble de géométries, maintenez votre curseur sur le nom de la classe d'entités pour voir le bouton Afficher la géométrie. Cliquez sur Afficher la géométrie pour voir chaque géométrie comme un choix distinct. Sélectionnez ceux que vous voulez. Chaque géométrie sélectionnée est ajoutée à la carte en tant que couche distincte du gestionnaire d'affichage.

Pour importer un sous-ensemble de données, cliquez sur la flèche vers le bas et sélectionnez Ajouter à la carte avec la requête . Pour filtrer les données après avoir ajouté les données à votre carte, consultez Filtrage d'une couche d'entités .


Voir la vidéo: LibreOffice Writer - 7 Tabelid 1