Suite

Utiliser forceToLineString() avec GDAL et Python ?


Pour mon script, je recherche une méthode pour convertir un MultiLineString en un simple LineString.

Exemple:

CHAÎNE MULTILIGNE ((0 0,0 1),(0 1,0 2),(0 2,0 3,0 4))

==>

LINESTRING (0 0,0 1,0 2,0 3,0 4)

J'ai trouvé une méthode GDAL appelée "forceToLineString" mais je ne sais pas comment l'utiliser. La façon dont j'ai essayé ne fonctionne pas:

depuis osgeo import ogr multiline = ogr.Geometry(ogr.wkbMultiLineString) line1 = ogr.Geometry(ogr.wkbLineString) line1.AddPoint_2D(0,0) line1.AddPoint_2D(0,1) line2 = ogr.Geometry(ogr.wkbLineString) line2.AddPoint_2D(0,1) line2.AddPoint_2D(0,2) line3 = ogr.Geometry(ogr.wkbLineString) line3.AddPoint_2D(0,2) line3.AddPoint_2D(0,3) line3.AddPoint_2D(0,4) multiline.AddGeometry(line1) multiline.AddGeometry(line2) multiline.AddGeometry(line3) multiline.forceToLineString() imprimer multiligne

Est-ce que quelqu'un peut m'aider?


La syntaxe correcte est :

print(multiline.ExportToWkt()) 'MULTILINESTRING ((0 0,0 1),(0 1,0 2),(0 2,0 3,0 4))' line = ogr.ForceToLineString(multiline) print(line .ExportToWkt()) 'LINESTRING (0 0,0 1,0 2,0 3,0 4)'

C'est plus facile avec Shapely

coordonnées = [((0,0),(0,1)),((0,1),(0,2)),((0,2),(0,3),(0,4)) ] de shapely.geometry import LineString, MultiLineString line1 = LineString([(0,0),(0,1)]) line2 = LineString([(0,1),(0,2)]) line3 = LineString([ (0,2),(0,3),(0,4)]) multiline = MultiLineString([list(line1.coords),list(line2.coords),list(line3.coords)]) # ou coords = [((0,0),(0,1)),((0,1),(0,2)),((0,2),(0,3),(0,4))] multiligne = MultiLineString(coords) # result print(multiline.wkt) MULTILINESTRING ((0 0, 0 1), (0 1, 0 2), (0 2, 0 3, 0 4)) # convertir en simple LineString (un MultiLineString est une liste de LineStrings) lines =[line for line in multiline] from shapely.ops import linemerge print(linemerge(lines).wkt) LINESTRING (0 0, 0 1, 0 2, 0 3, 0 4)

Utiliser forceToLineString() avec GDAL et Python ? - Systèmes d'information géographique

  • comptabilité
  • ajax-framework
  • cadre d'application
  • éditeur audio
  • automatisation
  • Big Data
  • moteur de blog
  • navigateur
  • outil de construction
  • Gestion de processus
  • cache
  • bibliothèque-graphique
  • serveur de chat
  • couverture de code
  • collaboration
  • colonne-base de données
  • gestion de documents
  • extraction de données
  • base de données
  • commerce électronique
  • Client de messagerie
  • base de données intégrée
  • recherche d'entreprise
  • erp
  • facebook-alternative
  • faq-system
  • la finance
  • forum-logiciel
  • ftp
  • recherche en texte intégral
  • moteur de jeu
  • géocodage
  • git
  • base de données graphique
  • système-d'information-de-santé
  • bureau d'aide
  • analyseur html
  • html en texte
  • Gestion des ressources humaines
  • gestion des identités
  • compression d'image
  • récupération de l'information
  • messagerie instantannée
  • système de détection d'intrusion
  • suivi des problèmes
  • java-framework
  • java-jeux
  • jquery-plugin
  • json
  • jvm
  • gestion des clés
  • key-value-store
  • langue-détection
  • système d'exploitation linux
  • outils-linux
  • log-analyse
  • client de messagerie
  • serveur de courrier
  • liste de diffusion
  • lecteur multimédia
  • Serveur multimédia
  • file d'attente des messages
  • micro-blogging
  • cadre-mobile
  • traitement-du-langage-naturel
  • la gestion du réseau
  • bibliothèque-réseau
  • réseau neuronal
  • pas de SQL
  • nodejs
  • serment
  • base de données objet
  • ocr
  • suite bureautique
  • shopping en ligne
  • système opérateur
  • orme
  • directeur chargé d'emballage
  • bibliothèque-pdf
  • personnel-finance
  • gestion des photos
  • langage de programmation
  • Serveur proxy
  • qa-outils
  • QR Code
  • question
  • la gestion des dossiers
  • base de données relationnelle
  • outil de rapport
  • outil rrd
  • direction-école
  • capture d'écran
  • moteur de recherche
  • serveur-surveillance
  • Panier
  • skype-alternative
  • bibliothèque-sms
  • réseaux sociaux
  • outil de test
  • extraction de texte
  • texte pour parler
  • billetterie
  • client-twitter
  • ubuntu-fork
  • uml-outil
  • test unitaire
  • url-shortening-service
  • contrôle de version
  • vidéo-cms
  • conférence vidéo
  • lecteur vidéo
  • virtualisation
  • visualisation
  • serveur voip
  • VPN
  • analyses d'audience Internet
  • framework-application-web
  • navigateur web
  • robot d'indexation
  • serveur Web
  • éditeur-wysiwyg
  • analyseur-xml
  • xmpp
  • visionneuse xps
  • Zip *: français
  • zlib

Turf - Un moteur géospatial modulaire écrit en JavaScript

Turf est une bibliothèque JavaScript pour l'analyse spatiale. Il comprend des opérations spatiales traditionnelles, des fonctions d'assistance pour la création de données GeoJSON et des outils de classification et de statistiques des données. Turf peut être ajouté à votre site Web en tant que plug-in côté client, ou vous pouvez exécuter Turf côté serveur avec Node.js (voir ci-dessous). Téléchargez le fichier minifié et incluez-le dans une balise de script. Cela exposera une variable globale nommée turf.

http://turfjs.org/
https://github.com/Turfjs/turf

Mots clés algorithme calcul-géométrie geojson gazon gis geo geojs géographie géospatiale géométrie carte contour centroïde étain étendue grille polygone ligne point zone analyse statistiques stats plan médian quantile jenks échantillon
Mise en œuvre Javascript
Licence MIT
Plate-forme NodeJS


Exemples¶

Exemple de reprojection¶

Reprojection simple d'un système de coordonnées projetées à un autre :

Produit la sortie suivante en mètres dans la projection « Belge 1972 / Belgian Lambert 72 » :

Exemple d'image RPC¶

La commande suivante demande une transformation basée sur RPC à l'aide du modèle RPC associé au fichier nommé. Étant donné que l'indicateur -i (inverse) est utilisé, la transformation se fait des coordonnées géoréférencées en sortie (WGS84) aux coordonnées de l'image.

Produit cette sortie mesurée en pixels et en lignes sur l'image :

X,Y,Z,transformation temporelle¶

Transformation de coordonnées Helmert en fonction du temps à 15 termes d'ITRF2000 à ITRF93 pour une coordonnée à l'époque 2000.0

Produit cette sortie mesurée en degrés de longitude, degrés de latitude et hauteur d'ellipsoïde en mètre :


Algorithme de projection de grille de latitude et de longitude de satellite GOES-R

Dans ce tutoriel, je vais discuter des méthodes utilisées pour le calcul de la latitude et de la longitude à partir d'un fichier de données GOES-R L1b. Les fichiers de radiance GOES-R L1b contiennent des données de radiance et des informations d'analyse géométrique en radians. Ces informations ne sont pas suffisantes pour tracer les données de radiance géographique directement à partir du fichier, cependant, après quelques manipulations géométriques exploitant la position du satellite et les paramètres ellipsoïdes, nous pouvons dériver les valeurs de latitude et de longitude des angles de balayage unidimensionnels et tracer nos données dans des formats projetés familiers. à de nombreux outils d'information géographique.

Index des articles de blog :

Théorie : Géométrie des satellites et de la Terre

Les pixels satellites peuvent être approximés comme une zone à la surface de la terre. Chaque pixel peut être identifié par un angle à une certaine hauteur au-dessus de la Terre. Le satellite produit des angles dans les directions x et y, tout en nous donnant également des informations sur la hauteur de l'instrument et des informations sur la terre. Ces paramètres nous permettront d'approcher la latitude et la longitude de chaque pixel après extrapolation à la surface de la terre.

Chaque pixel a besoin d'informations sur les éléments suivants :

Géométrie de l'ellipsoïde terrestre

Référence par rapport au centre de la Terre

Propriétés des satellites depuis le point et le centre de la Terre

Vous trouverez ci-dessous une représentation de la géométrie complexe impliquée dans la projection des informations de balayage du satellite sur le système de coordonnées géodésiques de la Terre :

Basé sur la source de définition de produit GOES-R (ici, page 20).

Maintenant, nous allons dériver les équations nécessaires pour passer des angles de balayage (en radians) aux coordonnées de latitude et de longitude que nous associons souvent aux informations géographiques.

Comprendre les angles de balayage (radians)

Le satellite GOES-R produit des fichiers de données netCDF4 qui contiennent des données et des variables d'analyse. Les variables de balayage sont appelées « x » et « y » Coordonnées de projection de grille fixe GOES en radians :

Les coordonnées de projection « x » et « y » donnent simplement des informations sur l'angle de chaque pixel par rapport à l'imageur. Cela ressemble à ce qui suit :

Exagération GOES-R pour visualiser les angles de balayage par rapport à la terre

En utilisant les angles de balayage et la géométrie ci-dessus, nous pouvons dériver la grille de latitude et de longitude pour relier les variables de données au comportement de la vérité terrain. Cette méthode crée des tableaux de latitude et de longitude, qui facilitent également l'étalonnage des produits satellitaires, ainsi que l'intégration avec des modèles météorologiques basés sur des emplacements géographiques.

Il est facile de considérer la relation ci-dessus comme un à un, mais en réalité, nous avons besoin des deux angles de balayage pour créer la latitude et la longitude.

Les angles de balayage peuvent être quadrillés à l'aide du simple tableau carré ci-dessus, mais doivent ensuite être convertis à l'aide de la géométrie complexe illustrée dans la première figure ci-dessus. Dans la section suivante, je décris les équations nécessaires pour transformer les angles en radians tirés du fichier netCDF et les convertir en valeurs de latitude et de longitude géographiques significatives. La reprojection créera une grille 2D que nous pourrons ensuite utiliser pour tracer les données de chaque fichier de données.

Reprojeter les angles de balayage (radians) en coordonnées géographiques (lat/long)

Maintenant que nous avons une compréhension approximative de la géométrie satellite-terre et du schéma de grille utilisé dans les fichiers de données GOES-R, nous pouvons introduire la série complexe d'équations utilisées pour reprojeter les angles de balayage jusqu'à la surface de la Terre en termes de latitude et de longitude. coordonnées.

D'ici, X représente la valeur de balayage horizontal en un point donné, et oui représente une valeur de balayage vertical en un point donné. φ est la latitude géodésique d'un point correspondant à la surface de la Terre, et λ est la longitude géodésique du point correspondant. Vous trouverez ci-dessous l'équation utilisée pour convertir les angles de balayage (x, y) à la latitude et à la longitude (,):





Je ne couvrirai pas la dérivation de chaque rotation de coordonnées (sx,y,z) ici, cependant, les méthodes peuvent être trouvées dans presque tous les manuels de mécanique orbitale. Les rotations de coordonnées sont définies comme suit :



Encore une fois, le x, y sont les angles de balayage donnés par le fichier de données netCDF. À partir de là, nous définissons davantage :

Ce qui a été trouvé en utilisant l'équation quadratique et la géométrie ci-dessus. Les variables sont définies comme :




Et maintenant, nous sommes prêts à calculer notre grille de latitude et de longitude à partir des informations que nous fournissent les fichiers de données satellitaires GOES-R.

Exploration des fichiers de données netCDF GOES-R

Les fichiers GOES-R contiennent les informations nécessaires pour utiliser les équations ci-dessus. Les données GOES-R sont disponibles sur le serveur Google Cloud situé ici :

Téléchargez un fichier de test à partir de l'un des dossiers (je recommande d'utiliser 'gcp-public-data-goes-16/ABI-L1b-RadC/2018'qui sont des données de radiance brutes récentes de 2018. Une fois le fichier téléchargé et placé dans un répertoire à proximité (j'ai mis le mien dans './rad_nc_files/'), nous pouvons commencer à analyser le fichier .nc.

Le code suivant lit un fichier netCDF et crée une variable de projection appelée 'proj_info' qui contient la plupart des variables nécessaires dans les équations ci-dessus :

L'impression de la variable 'proj_info' donne ce qui suit :

Il y a plusieurs variables très importantes à tirer de cette liste :

Avec les variables ci-dessus, nous avons maintenant suffisamment d'informations pour passer des fichiers de données contenant des angles radians 1D aux grilles de latitude et de longitude. Dans la section suivante, je présenterai l'algorithme réel de calcul des grilles lat/long à partir d'angles radians.

Implémentation de l'algorithme : angles de balayage GOES-R (radians) aux coordonnées géographiques (lat/long)

Maintenant que toutes les bases ont été construites, nous pouvons calculer la grille réelle pour un fichier de données netCDF donné. Le programme Python est présenté ci-dessous :

Si votre algorithme est correct et que votre fichier de données est de 1500 x 2500, votre sortie ci-dessus devrait ressembler à ce qui suit :

La capture d'écran ci-dessus indique à l'utilisateur quelques éléments :

Le nom du fichier netCDF lu

Il y avait des valeurs négatives sous la racine carrée dans le calcul de r_s

Il y avait des valeurs négatives sous la racine carrée dans le calcul de la latitude

Les valeurs de latitude et de longitude à un point spécifique ont réussi

Si votre capture d'écran ressemble à celle ci-dessus, FÉLICITATIONS. Le code a fonctionné. Les valeurs sorties par le programme sont la latitude et la longitude du pixel le plus proche de la ville de New York. Maintenant, vous avez une grille pour la latitude et la longitude qui est de la même taille que le tableau de données dans le fichier netCDF. Dans la section suivante, nous allons l'utiliser pour tracer et visualiser les données !

Coordonnées du pixel le plus proche de New York à bord du satellite GOES-R

Visualisation des données GOES-R avec la projection de grille de coordonnées géographiques dérivées

Vous trouverez ci-dessous une implémentation simple de l'algorithme de projection de grille ci-dessus, qui prend la grille et projette les données sur un fond de carte à l'aide de la boîte à outils de base de Python.

Si vous analysez des données de radiance brutes, la figure ci-dessous est la sortie attendue. Il contient des informations sur les données (ABI L1b Radiances), l'ID de la bande (8e bande, la longueur d'onde de la bande (6,118 microns) et la date (7 juillet 2018).

Contrairement à la figure ci-dessus, la figure ci-dessous est tirée du produit GOES-R de la température de surface du sol (LST) traitée. Le produit LST est utilisé pour des applications de modélisation et de prévision météorologiques, d'informations en temps réel sur les incendies et autres risques naturels, le comportement historique par rapport aux cultures, et bien plus encore. Un instantané pris le 6 juin 2018 est présenté ci-dessous :

Remarquez comment la figure juste au-dessus masque les données hors terre. C'est ainsi que de nombreux algorithmes traitent les données du produit - ils filtrent les données qui peuvent être au-dessus de l'eau, généralement à l'aide d'une sorte de masque d'élévation. Il existe également d'autres masques qui filtrent les données nuageuses et d'autres données de faible qualité qui peuvent avoir des interférences entre le satellite et la surface de la terre.

Conclusion

Ceci conclut le didacticiel sur la création de grilles de latitude et de longitude à partir de fichiers netCDF qui ne contiennent que des angles de balayage à une dimension. C'est une excellente pratique pour comprendre les satellites et la mécanique orbitale. Dans le didacticiel, j'ai couvert quelques notions de base sur les satellites en orbite et les méthodes de balayage utilisées par les satellites. Bien que je n'aie pas dérivé les équations géométriques complexes, j'ai montré comment les utiliser et implémenter les algorithmes utilisés pour tracer des images satellites en Python. Python était capable de gérer la lecture et le traçage des données assez rapidement, ce qui en fait une méthode puissante pour tracer des images satellite. On peut vouloir créer un fichier de grille et l'enregistrer, afin que l'algorithme puisse être accéléré lors de la lecture d'images satellitaires géostationnaires. Cependant, pour une introduction aux satellites en orbite et à la lecture des données netCDF, tout en visualisant l'imagerie, c'est une excellente incursion dans la visualisation des radiances des satellites.


Gdalinfo¶

gdalinfo Le programme répertorie diverses informations sur un jeu de données raster pris en charge par GDAL.

Les paramètres de ligne de commande suivants peuvent apparaître dans n'importe quel ordre

Affichez la sortie au format json.

Forcer le calcul des valeurs min/max réelles pour chaque bande de l'ensemble de données.

Lire et afficher les statistiques d'images. Forcer le calcul si aucune statistique n'est stockée dans une image.

Lire et afficher les statistiques d'images. Forcer le calcul si aucune statistique n'est stockée dans une image. Cependant, ils peuvent être calculés sur la base d'aperçus ou d'un sous-ensemble de toutes les tuiles. Utile si vous êtes pressé et que vous ne voulez pas de statistiques précises.

Rapport des informations d'histogramme pour toutes les bandes.

Supprimer l'impression de la liste des points de contrôle au sol. Cela peut être utile pour les ensembles de données avec une énorme quantité de GCP, tels que L1B AVHRR ou HDF4 MODIS qui en contiennent des milliers.

Supprimer l'impression des métadonnées. Certains ensembles de données peuvent contenir de nombreuses chaînes de métadonnées.

Supprimer l'impression de la table attributaire de raster.

Supprimer l'impression de la table des couleurs.

Force le calcul de la somme de contrôle pour chaque bande de l'ensemble de données.

Répertoriez tous les domaines de métadonnées disponibles pour l'ensemble de données.

domain Métadonnées de rapport pour le domaine spécifié.

all Métadonnées de rapport pour tous les domaines.

Afficher uniquement le premier fichier de la liste de fichiers.

Format WKT utilisé pour afficher le SRS. Actuellement, les valeurs prises en charge sont :

WKT2 (dernière version WKT, actuellement WKT2_2018)

Si l'ensemble de données d'entrée contient plusieurs sous-ensembles de données, lisez et affichez un sous-ensemble de données avec le nombre n spécifié (à partir de 1). Il s'agit d'une alternative au nom complet du sous-ensemble de données.

Rapporte une chaîne PROJ.4 correspondant au système de coordonnées du fichier.

Option d'ouverture du jeu de données (spécifique au format).

Format/nom du pilote à tenter d'ouvrir le(s) fichier(s) d'entrée. Il n'est généralement pas nécessaire de le spécifier, mais il peut être utilisé pour ignorer la détection automatique du pilote, lorsqu'il ne parvient pas à sélectionner le pilote approprié. Cette option peut être répétée plusieurs fois pour spécifier plusieurs pilotes candidats.

Le gdalinfo signalera tous les éléments suivants (s'ils sont connus) :

Le pilote de format utilisé pour accéder au fichier.

Taille du raster (en pixels et en lignes).

Le système de coordonnées du fichier (dans OGC WKT).

La géotransformation associée au fichier (les coefficients de rotation ne sont actuellement pas rapportés).

Coordonnées des coins géoréférencées, et si possible lat/long basées sur la géotransformation complète (mais pas les GCP).


4 réponses 4

Pour exécuter un ensemble de commandes Python à partir d'un script bash, vous devez donner à l'interpréteur Python les commandes à exécuter, soit à partir d'un fichier (script Python) que vous créez dans le script, comme dans

(cela crée un nouveau fichier appelé script.py ou écrase ce fichier s'il existe déjà, puis demande à Python de l'exécuter, il est ensuite supprimé)

. ou directement via une forme de redirection, par exemple un here-document :

Ce que cela fait, c'est exécuter python - qui demande à l'interpréteur Python de lire le script à partir de l'entrée standard. Le shell envoie ensuite le texte du script Python (délimité par END_SCRIPT dans le script shell) au flux d'entrée standard du processus Python.

Notez que les deux bits de code ci-dessus sont subtilement différents en ce que le processus Python du deuxième script a son entrée standard connectée au script qu'il lit, tandis que le processus Python du premier script est libre de lire des données autres que le script à partir de l'entrée standard. Cela compte si votre code Python lit à partir d'une entrée standard.

Python peut également prendre un ensemble de commandes de la ligne de commande directement avec son option -c :

Qu'est-ce que tu ne peut pas faire est de "passer en Python" au milieu d'un script bash.

Les commandes d'un script sont exécutées par bash les unes après les autres, et pendant qu'une commande est en cours d'exécution, le script lui-même attend qu'elle se termine (s'il ne s'agit pas d'un travail en arrière-plan).

Cela signifie que votre script d'origine démarrerait Python en mode interactif, suspendant temporairement l'exécution du script bash jusqu'à ce que le processus Python se termine. Le script essaierait alors d'exécuter print("TESTPRINT") en tant que commande shell.

C'est un problème similaire avec l'utilisation de ssh comme ceci dans un script :

(ce qui peut être similaire à ce que vous dites avoir essayé il y a quelques années).

Cela ferait ne pas connectez-vous au système distant et exécutez les commandes cd et ls là-bas. Cela démarrerait un shell interactif sur le système distant, et une fois que ce shell se serait terminé (rendant le contrôle au script), cd et ls seraient exécutés localement.

Au lieu de cela, pour exécuter les commandes sur une machine distante, utilisez

(Ceci est un exemple boiteux, mais vous pouvez obtenir le point).

L'exemple ci-dessous montre comment vous pouvez réellement faire ce que vous proposez. Il est cependant livré avec plusieurs étiquettes d'avertissement et mises en garde, et vous ne devriez jamais écrire de code comme celui-ci (parce que c'est obscurci et donc impossible à maintenir et, oserais-je le dire, carrément mauvais).

Ce qui se passe ici, c'est que le script est exécuté par sh -s . L'option -s de sh (et de bash ) indique au shell d'exécuter le script shell arrivant sur le flux d'entrée standard.

Le script démarre alors python - , qui indique Python pour exécuter tout ce qui entre sur le flux d'entrée standard. La prochaine chose sur ce flux, puisqu'il est hérité de sh -s par Python (et donc connecté à notre fichier texte de script), est la commande Python print("TESTPRINT") .

L'interpréteur Python continuerait alors à lire et à exécuter des commandes à partir du fichier de script jusqu'à ce qu'il s'épuise ou exécute la commande Python exit() .


Installer pyenv

Installez les outils et les en-têtes nécessaires pour créer des CPythons (les Pythons exotiques comme PyPy ou Jython peuvent avoir d'autres dépendances). Git est utilisé par pyenv, et il permet également de construire/installer des branches source, vous pouvez donc installer tout ce qui est 3.8 actuellement, c'est-à-dire la branche principale de CPython fraîchement sortie de GitHub :

Exécutez le script d'installation (installe pyenv et quelques plugins pyenv très utiles de l'auteur original, voir ici pour en savoir plus)

/.bashrc (il le mentionne à la fin du script d'installation) :

Redémarrez votre shell (close & open ou exec $SHELL ) ou rechargez le script de profil. (avec par exemple la source


骨 量 测定 课 ¶

Classe de base abstraite pour toutes les classes de géométrie.

Certaines méthodes d'analyse spatiale nécessitent qu'OGR soit construit sur la bibliothèque GEOS pour fonctionner correctement. La signification précise des méthodes qui décrivent les relations spatiales entre les géométries est décrite dans le SFCOM, ou d'autres spécifications d'interface de fonctionnalités simples, telles que "OpenGIS® Implementation Specification for Geographic information - Simple feature access - Part 1 : Common architecture" :

Dans GDAL 2.0, la hiérarchie des classes a été étendue avec (ébauche de travail) des géométries de courbe ISO SQL/MM Part 3 (ISO/IEC 13249-3) : CIRCULARSTRING ( OGRCircularString ), COMPOUNDCURVE (OGRCompoundCurve), CURVEPOLYGON ( OGRCurvePolygon ), MULTICURVE ( OGRMultiCurve ) et MULTISURFACE ( OGRMultiSurface ).

Remarque : avant GDAL 2.1, seule l'implémentation par défaut du constructeur existait, ce qui pouvait être dangereux à utiliser.

Remarque : avant GDAL 2.1, seule l'implémentation par défaut de l'opérateur existait, ce qui pouvait être dangereux à utiliser.

Renvoie si deux géométries sont égales.

Renvoie si deux géométries sont différentes.

int getDimension ( ) const = 0¶

Obtenez la dimension de cet objet.

Cette méthode correspond à la méthode SFCOM IGeometry::GetDimension(). Il indique la dimension de l'objet, mais n'indique pas la dimension de l'espace sous-jacent (comme indiqué par OGRGeometry::getCoordinateDimension() ).

Cette méthode est la même que la fonction C OGR_G_GetDimension() .

0 pour les points, 1 pour les lignes et 2 pour les surfaces.

int getCoordinateDimension ( ) const

Obtenez la dimension des coordonnées dans cet objet.

Cette méthode est la même que la fonction C OGR_G_GetCoordinateDimension() .

int CoordinateDimension ( ) const

Obtenez la dimension des coordonnées dans cet objet.

Cette méthode est la même que la fonction C OGR_G_CoordinateDimension() .

cela renverra 2 pour XY, 3 pour XYZ et XYM et 4 pour les données XYZM.

Renvoie TRUE (différent de zéro) si l'objet n'a pas de points.

Normalement, cela renvoie FALSE, sauf entre le moment où un objet est instancié et des points ont été attribués.

Cette méthode est liée à la méthode SFCOM IGeometry::IsEmpty().

TRUE si l'objet est vide, sinon FALSE.

Testez si la géométrie est valide.

Cette méthode est la même que la fonction C OGR_G_IsValid() .

Cette méthode est construite sur la bibliothèque GEOS, vérifiez-la pour la définition de l'opération de géométrie. Si OGR est construit sans la bibliothèque GEOS, cette méthode retournera toujours FALSE.

VRAI si la géométrie n'a pas de points, sinon FAUX.

Tente de rendre valide une géométrie non valide sans perdre de sommets.

Les géométries déjà valides sont clonées sans autre intervention.

Cette méthode est la même que la fonction C OGR_G_MakeValid() .

Cette fonction est construite sur la bibliothèque GEOS >= 3.8, vérifiez-la pour la définition de l'opération de géométrie. Si OGR est construit sans la bibliothèque GEOS >= 3.8, cette fonction renverra un clone de la géométrie d'entrée si elle est valide, ou NULL si elle est invalide

une géométrie nouvellement allouée maintenant détenue par l'appelant, ou NULL en cas d'échec.

Testez si la géométrie est simple.

Cette méthode est la même que la fonction C OGR_G_IsSimple() .

Cette méthode est construite sur la bibliothèque GEOS, vérifiez-la pour la définition de l'opération de géométrie. Si OGR est construit sans la bibliothèque GEOS, cette méthode retournera toujours FALSE.

VRAI si la géométrie n'a pas de points, sinon FAUX.

Renvoie si la géométrie a un composant Z.

Renvoie si la géométrie a un composant M.

Testez si la géométrie est un anneau.

Cette méthode est la même que la fonction C OGR_G_IsRing() .

Cette méthode est construite sur la bibliothèque GEOS, vérifiez-la pour la définition de l'opération de géométrie. Si OGR est construit sans la bibliothèque GEOS, cette méthode renverra toujours FALSE.

VRAI si la géométrie n'a pas de points, sinon FAUX.

Effacer les informations de géométrie. Cela restaure la géométrie à son état initial après la construction et avant l'affectation de la géométrie réelle.

Cette méthode est liée à la méthode SFCOM IGeometry::Empty().

Cette méthode est la même que la fonction C OGR_G_Empty() .

Faites une copie de cet objet.

Cette méthode est liée à la méthode SFCOM IGeometry::clone().

Cette méthode est la même que la fonction C OGR_G_Clone() .

une nouvelle instance d'objet avec la même géométrie et le même système de référence spatiale que l'original.

void getEnvelope ( OGREnvelope *psEnveloppe ) const = 0¶

Calcule et renvoie l'enveloppe de délimitation de cette géométrie dans la structure psEnvelope transmise.

Cette méthode est la même que la fonction C OGR_G_GetEnvelope() .

psEnvelope : la structure dans laquelle placer les résultats.

Calcule et renvoie l'enveloppe de délimitation (3D) pour cette géométrie dans la structure psEnvelope transmise.

Cette méthode est la même que la fonction C OGR_G_GetEnvelope3D() .

psEnvelope : la structure dans laquelle placer les résultats.

Renvoie la taille de la représentation binaire associée.

Cette méthode renvoie le nombre exact d'octets requis pour contenir la représentation binaire bien connue de cet objet géométrique. Son calcul peut être légèrement coûteux pour des géométries complexes.

Cette méthode se rapporte à la méthode SFCOM IWks::WkbSize().

Cette méthode est la même que la fonction C OGR_G_WkbSize() .

taille de la représentation binaire en octets.

OGRErr importFromWkb ( const GByte*, int = -1, OGRwkbVariant = wkbVariantOldOgc ) ¶

Attribuez une géométrie à partir de données binaires bien connues.

L'objet doit déjà avoir été instancié en tant que type dérivé correct d'objet géométrique pour correspondre au type binaire. Cette méthode est utilisée par la classe OGRGeometryFactory, mais n'est normalement pas appelée par le code de l'application.

Cette méthode se rapporte à la méthode SFCOM IWks::ImportFromWKB().

Cette méthode est la même que la fonction C OGR_G_ImportFromWkb() .

OGRERR_NONE si tout se passe bien, sinon OGRERR_NOT_ENOUGH_DATA, OGRERR_UNSUPPORTED_GEOMETRY_TYPE ou OGRERR_CORRUPT_DATA peut être renvoyé.

pabyData : les données d'entrée binaires.

nSize : la taille de pabyData en octets, ou -1 si elle n'est pas connue.

eWkbVariant : si wkbVariantPostGIS1, une interprétation spéciale est faite pour le code des géométries de courbe

OGRErr importFromWkb ( const caractère non signé*, int, OGRwkbVariant, int &nOctetsConsomméSortie ) = 0¶

Attribuez une géométrie à partir de données binaires bien connues.

L'objet doit déjà avoir été instancié en tant que type dérivé correct d'objet géométrique pour correspondre au type binaire. Cette méthode est utilisée par la classe OGRGeometryFactory, mais n'est normalement pas appelée par le code de l'application.

Cette méthode se rapporte à la méthode SFCOM IWks::ImportFromWKB().

Cette méthode est la même que la fonction C OGR_G_ImportFromWkb() .

OGRERR_NONE si tout se passe bien, sinon OGRERR_NOT_ENOUGH_DATA, OGRERR_UNSUPPORTED_GEOMETRY_TYPE ou OGRERR_CORRUPT_DATA peut être renvoyé.

pabyData : les données d'entrée binaires.

nSize : la taille de pabyData en octets, ou -1 si elle n'est pas connue.

eWkbVariant : si wkbVariantPostGIS1, une interprétation spéciale est faite pour le code des géométries de courbe

nBytesConsumedOut : paramètre de sortie. Nombre d'octets consommés.

OGRErr exportToWkb ( OGRwkbByteOrder, caractère non signé *, OGRwkbVariant = wkbVariantOldOgc ) const = 0¶

Convertir une géométrie en format binaire bien connu.

Cette méthode se rapporte à la méthode SFCOM IWks::ExportToWKB().

Cette méthode est la même que la fonction C OGR_G_ExportToWkb() ou OGR_G_ExportToIsoWkb() , selon la valeur de eWkbVariant.

Actuellement, OGRERR_NONE est toujours renvoyé.

eByteOrder : L'un des wkbXDR ou wkbNDR indiquant respectivement l'ordre des octets MSB ou LSB.

pabyData : un tampon dans lequel la représentation binaire est écrite. Ce tampon doit avoir une taille d'au moins OGRGeometry::WkbSize().

eWkbVariant : Quelle norme utiliser lors de l'exportation de géométries à trois dimensions (ou plus). Le wkbVariantOldOgc par défaut est la variante OGR historique. wkbVariantIso est la variante définie dans ISO SQL/MM et adoptée par OGC pour SFSQL 1.2.

OGRErr importFromWkt ( const caractère **ppszEntrée ) = 0¶

Attribuez une géométrie à partir de données de texte bien connues.

L'objet doit avoir déjà été instancié en tant que type dérivé correct d'objet géométrique pour correspondre au type de texte. Cette méthode est utilisée par la classe OGRGeometryFactory, mais n'est normalement pas appelée par le code de l'application.

Cette méthode se rapporte à la méthode SFCOM IWks::ImportFromWKT().

Cette méthode est la même que la fonction C OGR_G_ImportFromWkt() .

OGRERR_NONE si tout se passe bien, sinon OGRERR_NOT_ENOUGH_DATA, OGRERR_UNSUPPORTED_GEOMETRY_TYPE ou OGRERR_CORRUPT_DATA peut être renvoyé.

ppszInput : pointeur vers un pointeur vers le texte source. Le pointeur est mis à jour en pointeur après le texte consommé.

OGRErr exportToWkt ( car **ppszDstText, OGRwkbVariant = wkbVariantOldOgc ) const

Convertir une géométrie dans un format de texte bien connu.

Cette méthode se rapporte à la méthode SFCOM IWks::ExportToWKT().

Cette méthode est la même que la fonction C OGR_G_ExportToWkt() .

Actuellement, OGRERR_NONE est toujours renvoyé.

ppszDstText : un tampon de texte est alloué par le programme, et affecté au pointeur passé. Après utilisation, *ppszDstText doit être libéré avec CPLFree() .

wkbVariantOgc pour les types WKB à dimension étendue (Z) de style ancien 99-402

wkbVariantIso pour SFSQL 1.2 et ISO SQL/MM Partie 3

std::string exportToWkt ( const OGRWktOptions &opte = OGRWktOptions(), OGRErr *se tromper = nullptr ) const = 0¶

Chaîne WKT représentant cette géométrie.

err : Pointeur vers le code d'erreur, si vous le souhaitez.

Notez que le type de géométrie peut inclure le drapeau 2.5D. Pour obtenir une version aplatie 2D du type de géométrie, appliquez la macro wkbFlatten() au résultat de retour.

Cette méthode est la même que la fonction C OGR_G_GetGeometryType() .

Obtenez le type de géométrie conforme à ISO SQL/MM Part3.

le type de géométrie conforme à ISO SQL/MM Part3

const char * getGeometryName ( ) const = 0¶

Récupérer le nom WKT pour le type de géométrie.

Il n'y a pas d'analogue SFCOM à cette méthode.

Cette méthode est la même que la fonction C OGR_G_GetGeometryName() .

nom utilisé pour ce type de géométrie dans un format texte bien connu. Le pointeur renvoyé est vers une chaîne interne statique et ne doit pas être modifié ou libéré.

void dumpReadable ( FILE*, const char* = nullptr, char **PapszOptions = nullptr ) const

Videz la géométrie dans un format texte bien connu dans le fichier de sortie indiqué.

DISPLAY_GEOMETRY=NO : pour masquer le dump de la géométrie

DISPLAY_GEOMETRY=WKT ou YES (par défaut) : dump de la géométrie en WKT

DISPLAY_GEOMETRY=SUMMARY : pour n'avoir qu'un résumé de la géométrie

Cette méthode est la même que la fonction C OGR_G_DumpReadable() .

fp : le fichier texte dans lequel écrire la géométrie.

pszPrefix : le préfixe à mettre sur chaque ligne de sortie.

papszOptions : liste d'options terminée par NULL (peut être NULL)

Convertissez la géométrie en strictement 2D. Dans un sens, cela convertit toutes les coordonnées Z en 0,0.

Cette méthode est la même que la fonction C OGR_G_FlattenTo2D() .

char * exportVersGML ( const caractère *const *PapszOptions = nullptr ) const

Convertir une géométrie au format GML.

La géométrie GML est exprimée directement en termes de types de données de base GML en supposant qu'elles soient disponibles dans l'espace de noms gml. La chaîne renvoyée doit être libérée avec CPLFree() lorsqu'elle n'est plus requise.

FORMAT=GML3. Sinon, la sortie GML 2.1.2 sera par défaut.

GML3_LINESTRING_ELEMENT=courbe. (Valable uniquement pour FORMAT=GML3) Pour utiliser l'élément gml:Curve pour les chaînes de lignes. Sinon, gml:LineString sera utilisé .

GML3_LONGSRS=OUI/NON. (Valable uniquement pour FORMAT=GML3) La valeur par défaut est OUI. Si OUI, SRS avec autorité EPSG sera écrit avec le préfixe "urn:ogc:def:crs:EPSG::". Dans le cas, si le SRS est un SRS géographique sans ordre AXIS explicite, mais que le même code d'autorité SRS importé avec ImportFromEPSGA() doit être traité comme lat/long, alors la fonction prendra en charge l'échange de l'ordre des coordonnées. S'il est défini sur NON, SRS avec autorité EPSG sera écrit avec le préfixe "EPSG:", même s'ils sont dans l'ordre lat/long.

Cette méthode est la même que la fonction C OGR_G_ExportToGMLEx() .

Un fragment GML ou NULL en cas d'erreur.

papszOptions : liste d'options terminée par NULL.

char * exportVersKML ( ) const

Convertir une géométrie au format KML.

La chaîne renvoyée doit être libérée avec CPLFree() lorsqu'elle n'est plus requise.

Cette méthode est la même que la fonction C OGR_G_ExportToKML() .

Un fragment KML ou NULL en cas d'erreur.

char * exportVersJson ( ) const

Convertir une géométrie au format GeoJSON.

La chaîne renvoyée doit être libérée avec CPLFree() lorsqu'elle n'est plus requise.

Cette méthode est la même que la fonction C OGR_G_ExportToJson() .

Un fragment GeoJSON ou NULL en cas d'erreur.

void accept ( IOGRGeometryVisitor *visitor ) = 0¶

void accept ( IOGRConstGeometryVisitor *visitor ) const = 0¶

GEOSGeom exportToGEOS ( GEOSContextHandle_t hGEOSCtxt ) const

Returns a GEOSGeom object corresponding to the geometry.

a GEOSGeom object corresponding to the geometry.

OGRBoolean hasCurveGeometry ( int bLookForNonLinear = FALSE ) const

Returns if this geometry is or has curve geometry.

Returns if a geometry is, contains or may contain a CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON, MULTICURVE or MULTISURFACE.

If bLookForNonLinear is set to TRUE, it will be actually looked if the geometry or its subgeometries are or contain a non-linear geometry in them. In which case, if the method returns TRUE, it means that getLinearGeometry() would return an approximate version of the geometry. Otherwise, getLinearGeometry() would do a conversion, but with just converting container type, like COMPOUNDCURVE -> LINESTRING, MULTICURVE -> MULTILINESTRING or MULTISURFACE -> MULTIPOLYGON, resulting in a "loss-less" conversion.

This method is the same as the C function OGR_G_HasCurveGeometry() .

TRUE if this geometry is or has curve geometry.

bLookForNonLinear : set it to TRUE to check if the geometry is or contains a CIRCULARSTRING.

OGRGeometry * getCurveGeometry ( const char *const *papszOptions = nullptr ) const

Return curve version of this geometry.

Returns a geometry that has possibly CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON, MULTICURVE or MULTISURFACE in it, by de-approximating curve geometries.

If the geometry has no curve portion, the returned geometry will be a clone of it.

The ownership of the returned geometry belongs to the caller.

This function is the same as C function OGR_G_GetCurveGeometry() .

papszOptions : options as a null-terminated list of strings. Unused for now. Must be set to NULL.

OGRGeometry * getLinearGeometry ( double dfMaxAngleStepSizeDegrees = 0, const char *const *papszOptions = nullptr ) const

Return, possibly approximate, non-curve version of this geometry.

Returns a geometry that has no CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON, MULTICURVE or MULTISURFACE in it, by approximating curve geometries.

The ownership of the returned geometry belongs to the caller.

This method is the same as the C function OGR_G_GetLinearGeometry() .

dfMaxAngleStepSizeDegrees : the largest step in degrees along the arc, zero to use the default setting.

papszOptions : options as a null-terminated list of strings. See OGRGeometryFactory::curveToLineString() for valid options.

If this geometry, or any contained geometries has polygon rings that are not closed, they will be closed by adding the starting point at the end.

void setCoordinateDimension ( int nDimension ) ¶

Set the coordinate dimension.

This method sets the explicit coordinate dimension. Setting the coordinate dimension of a geometry to 2 should zero out any existing Z values. Setting the dimension of a geometry collection, a compound curve, a polygon, etc. will affect the children geometries. This will also remove the M dimension if present before this call.

nNewDimension : New coordinate dimension value, either 2 or 3.

Add or remove the Z coordinate dimension.

This method adds or removes the explicit Z coordinate dimension. Removing the Z coordinate dimension of a geometry will remove any existing Z values. Adding the Z dimension to a geometry collection, a compound curve, a polygon, etc. will affect the children geometries.

bIs3D : Should the geometry have a Z dimension, either TRUE or FALSE.

void setMeasured ( OGRBoolean bIsMeasured ) ¶

Add or remove the M coordinate dimension.

This method adds or removes the explicit M coordinate dimension. Removing the M coordinate dimension of a geometry will remove any existing M values. Adding the M dimension to a geometry collection, a compound curve, a polygon, etc. will affect the children geometries.

bIsMeasured : Should the geometry have a M dimension, either TRUE or FALSE.

Assign spatial reference to this object.

Any existing spatial reference is replaced, but under no circumstances does this result in the object being reprojected. It is just changing the interpretation of the existing geometry. Note that assigning a spatial reference increments the reference count on the OGRSpatialReference , but does not copy it.

Starting with GDAL 2.3, this will also assign the spatial reference to potential sub-geometries of the geometry ( OGRGeometryCollection , OGRCurvePolygon/OGRPolygon, OGRCompoundCurve, OGRPolyhedralSurface and their derived classes).

This is similar to the SFCOM IGeometry::put_SpatialReference() method.

This method is the same as the C function OGR_G_AssignSpatialReference() .

poSR : new spatial reference system to apply.

Returns spatial reference system for object.

This method relates to the SFCOM IGeometry::get_SpatialReference() method.

This method is the same as the C function OGR_G_GetSpatialReference() .

a reference to the spatial reference object. The object may be shared with many geometry objects, and should not be modified.

Apply arbitrary coordinate transformation to geometry.

This method will transform the coordinates of a geometry from their current spatial reference system to a new target spatial reference system. Normally this means reprojecting the vectors, but it could include datum shifts, and changes of units.

Note that this method does not require that the geometry already have a spatial reference system. It will be assumed that they can be treated as having the source spatial reference system of the OGRCoordinateTransformation object, and the actual SRS of the geometry will be ignored. On successful completion the output OGRSpatialReference of the OGRCoordinateTransformation will be assigned to the geometry.

This method is the same as the C function OGR_G_Transform() .

OGRERR_NONE on success or an error code.

poCT : the transformation to apply.

Transform geometry to new spatial reference system.

This method will transform the coordinates of a geometry from their current spatial reference system to a new target spatial reference system. Normally this means reprojecting the vectors, but it could include datum shifts, and changes of units.

This method will only work if the geometry already has an assigned spatial reference system, and if it is transformable to the target coordinate system.

Because this method requires internal creation and initialization of an OGRCoordinateTransformation object it is significantly more expensive to use this method to transform many geometries than it is to create the OGRCoordinateTransformation in advance, and call transform() with that transformation. This method exists primarily for convenience when only transforming a single geometry.

This method is the same as the C function OGR_G_TransformTo() .

OGRERR_NONE on success, or an error code.

poSR : spatial reference system to transform to.

void segmentize ( double dfMaxLength ) ¶

Modify the geometry such it has no segment longer then the given distance.

This method modifies the geometry to add intermediate vertices if necessary so that the maximum length between 2 consecutive vertices is lower than dfMaxLength.

Interpolated points will have Z and M values (if needed) set to 0. Distance computation is performed in 2d only

This function is the same as the C function OGR_G_Segmentize()

dfMaxLength : the maximum distance between 2 points after segmentization

Do these features intersect?

Determines whether two geometries intersect. If GEOS is enabled, then this is done in rigorous fashion otherwise TRUE is returned if the envelopes (bounding boxes) of the two geometries overlap.

The poOtherGeom argument may be safely NULL, but in this case the method will always return TRUE. That is, a NULL geometry is treated as being everywhere.

This method is the same as the C function OGR_G_Intersects() .

TRUE if the geometries intersect, otherwise FALSE.

poOtherGeom : the other geometry to test against.

Returns TRUE if two geometries are equivalent.

This operation implements the SQL/MM ST_OrderingEquals() operation.

The comparison is done in a structural way, that is to say that the geometry types must be identical, as well as the number and ordering of sub-geometries and vertices. Or equivalently, two geometries are considered equal by this method if their WKT/WKB representation is equal. Note: this must be distinguished for equality in a spatial way (which is the purpose of the ST_Equals() operation).

This method is the same as the C function OGR_G_Equals() .

TRUE if equivalent or FALSE otherwise.

Tests if this geometry and the other passed into the method are disjoint.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_Disjoint() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

TRUE if they are disjoint, otherwise FALSE.

poOtherGeom : the geometry to compare to this geometry.

Tests if this geometry and the other passed into the method are touching.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_Touches() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

TRUE if they are touching, otherwise FALSE.

poOtherGeom : the geometry to compare to this geometry.

Tests if this geometry and the other passed into the method are crossing.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_Crosses() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

TRUE if they are crossing, otherwise FALSE.

poOtherGeom : the geometry to compare to this geometry.

Tests if actual geometry object is within the passed geometry.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_Within() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

TRUE if poOtherGeom is within this geometry, otherwise FALSE.

poOtherGeom : the geometry to compare to this geometry.

Tests if actual geometry object contains the passed geometry.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_Contains() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

TRUE if poOtherGeom contains this geometry, otherwise FALSE.

poOtherGeom : the geometry to compare to this geometry.

Tests if this geometry and the other passed into the method overlap, that is their intersection has a non-zero area.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_Overlaps() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

TRUE if they are overlapping, otherwise FALSE.

poOtherGeom : the geometry to compare to this geometry.

A new geometry object is created and returned containing the boundary of the geometry on which the method is invoked.

This method is the same as the C function OGR_G_Boundary() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

a newly allocated geometry now owned by the caller, or NULL on failure.

Compute distance between two geometries.

Returns the shortest distance between the two geometries. The distance is expressed into the same unit as the coordinates of the geometries.

This method is the same as the C function OGR_G_Distance() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

the distance between the geometries or -1 if an error occurs.

poOtherGeom : the other geometry to compare against.

A new geometry object is created and returned containing the convex hull of the geometry on which the method is invoked.

This method is the same as the C function OGR_G_ConvexHull() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

a newly allocated geometry now owned by the caller, or NULL on failure.

Compute buffer of geometry.

Builds a new geometry containing the buffer region around the geometry on which it is invoked. The buffer is a polygon containing the region within the buffer distance of the original geometry.

Some buffer sections are properly described as curves, but are converted to approximate polygons. The nQuadSegs parameter can be used to control how many segments should be used to define a 90 degree curve - a quadrant of a circle. A value of 30 is a reasonable default. Large values result in large numbers of vertices in the resulting buffer geometry while small numbers reduce the accuracy of the result.

This method is the same as the C function OGR_G_Buffer() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

the newly created geometry, or NULL if an error occurs.

dfDist : the buffer distance to be applied. Should be expressed into the same unit as the coordinates of the geometry.

nQuadSegs : the number of segments used to approximate a 90 degree (quadrant) of curvature.

Generates a new geometry which is the region of intersection of the two geometries operated on. The Intersects() method can be used to test if two geometries intersect.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_Intersection() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

a new geometry representing the intersection or NULL if there is no intersection or an error occurs.

poOtherGeom : the other geometry intersected with "this" geometry.

Generates a new geometry which is the region of union of the two geometries operated on.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_Union() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

a new geometry representing the union or NULL if an error occurs.

poOtherGeom : the other geometry unioned with "this" geometry.

Compute union using cascading.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_UnionCascaded() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

a new geometry representing the union or NULL if an error occurs.

Generates a new geometry which is the region of this geometry with the region of the second geometry removed.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_Difference() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

a new geometry representing the difference or NULL if the difference is empty or an error occurs.

poOtherGeom : the other geometry removed from "this" geometry.

Compute symmetric difference.

Generates a new geometry which is the symmetric difference of this geometry and the second geometry passed into the method.

Geometry validity is not checked. In case you are unsure of the validity of the input geometries, call IsValid() before, otherwise the result might be wrong.

This method is the same as the C function OGR_G_SymDifference() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

a new geometry representing the symmetric difference or NULL if the difference is empty or an error occurs.

poOtherGeom : the other geometry.

Compute the geometry centroid.

The centroid location is applied to the passed in OGRPoint object. The centroid is not necessarily within the geometry.

This method relates to the SFCOM ISurface::get_Centroid() method however the current implementation based on GEOS can operate on other geometry types such as multipoint, linestring, geometrycollection such as multipolygons. OGC SF SQL 1.1 defines the operation for surfaces (polygons). SQL/MM-Part 3 defines the operation for surfaces and multisurfaces (multipolygons).

This function is the same as the C function OGR_G_Centroid() .

This function is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this function will always fail, issuing a CPLE_NotSupported error.

OGRERR_NONE on success or OGRERR_FAILURE on error.

OGR 1.8.0 as a OGRGeometry method (previously was restricted to OGRPolygon )

This function is the same as the C function OGR_G_Simplify() .

This function is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this function will always fail, issuing a CPLE_NotSupported error.

the simplified geometry or NULL if an error occurs.

dTolerance : the distance tolerance for the simplification.

OGRGeometry * SimplifyPreserveTopology ( double dTolerance ) const

Simplify the geometry while preserving topology.

This function is the same as the C function OGR_G_SimplifyPreserveTopology() .

This function is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this function will always fail, issuing a CPLE_NotSupported error.

the simplified geometry or NULL if an error occurs.

dTolerance : the distance tolerance for the simplification.

OGRGeometry * DelaunayTriangulation ( double dfTolerance, int bOnlyEdges ) const

Return a Delaunay triangulation of the vertices of the geometry.

This function is the same as the C function OGR_G_DelaunayTriangulation() .

This function is built on the GEOS library, v3.4 or above. If OGR is built without the GEOS library, this function will always fail, issuing a CPLE_NotSupported error.

the geometry resulting from the Delaunay triangulation or NULL if an error occurs.

dfTolerance : optional snapping tolerance to use for improved robustness

bOnlyEdges : if TRUE, will return a MULTILINESTRING, otherwise it will return a GEOMETRYCOLLECTION containing triangular POLYGONs.

Polygonizes a set of sparse edges.

A new geometry object is created and returned containing a collection of reassembled Polygons: NULL will be returned if the input collection doesn't corresponds to a MultiLinestring, or when reassembling Edges into Polygons is impossible due to topological inconsistencies.

This method is the same as the C function OGR_G_Polygonize() .

This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

a newly allocated geometry now owned by the caller, or NULL on failure.

Returns the 3D distance between two geometries.

The distance is expressed into the same unit as the coordinates of the geometries.

This method is built on the SFCGAL library, check it for the definition of the geometry operation. If OGR is built without the SFCGAL library, this method will always return -1.0

This function is the same as the C function OGR_G_Distance3D() .

distance between the two geometries

Implies prior checking that wkbFlatten(getGeometryType()) == wkbPoint. Depuis

Implies prior checking that wkbFlatten(getGeometryType()) == wkbPoint. Depuis

Implies prior checking that OGR_GT_IsSubClass(getGeometryType(), wkbCurve). Depuis

Implies prior checking that OGR_GT_IsSubClass(getGeometryType(), wkbCurve). Depuis

Down-cast to OGRSimpleCurve*.

Implies prior checking that getGeometryType() is wkbLineString, wkbCircularString or a derived type. Depuis

const OGRSimpleCurve * toSimpleCurve ( ) const

Down-cast to OGRSimpleCurve*.

Implies prior checking that getGeometryType() is wkbLineString, wkbCircularString or a derived type. Depuis

Down-cast to OGRLineString*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbLineString. Depuis

Down-cast to OGRLineString*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbLineString. Depuis

Down-cast to OGRLinearRing*.

Implies prior checking that EQUAL( getGeometryName() , "LINEARRING"). Depuis

Down-cast to OGRLinearRing*.

Implies prior checking that EQUAL( getGeometryName() , "LINEARRING"). Depuis

Down-cast to OGRCircularString*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbCircularString. Depuis

Down-cast to OGRCircularString*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbCircularString. Depuis

Down-cast to OGRCompoundCurve*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbCompoundCurve. Depuis

const OGRCompoundCurve * toCompoundCurve ( ) const

Down-cast to OGRCompoundCurve*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbCompoundCurve. Depuis

Implies prior checking that OGR_GT_IsSubClass(getGeometryType(), wkbSurface). Depuis

Implies prior checking that OGR_GT_IsSubClass(getGeometryType(), wkbSurface). Depuis

Implies prior checking that wkbFlatten(getGeometryType()) == wkbPolygon or wkbTriangle. Depuis

Implies prior checking that wkbFlatten(getGeometryType()) == wkbPolygon or wkbTriangle. Depuis

Implies prior checking that wkbFlatten(getGeometryType()) == wkbTriangle. Depuis

Implies prior checking that wkbFlatten(getGeometryType()) == wkbTriangle. Depuis

Down-cast to OGRCurvePolygon*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbCurvePolygon or wkbPolygon or wkbTriangle. Depuis

Down-cast to OGRCurvePolygon*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbCurvePolygon or wkbPolygon or wkbTriangle. Depuis

Down-cast to OGRGeometryCollection*.

Implies prior checking that OGR_GT_IsSubClass(getGeometryType(), wkbGeometryCollection). Depuis

Down-cast to OGRGeometryCollection*.

Implies prior checking that OGR_GT_IsSubClass(getGeometryType(), wkbGeometryCollection). Depuis

Down-cast to OGRMultiPoint*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiPoint. Depuis

Down-cast to OGRMultiPoint*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiPoint. Depuis

Down-cast to OGRMultiLineString*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiLineString. Depuis

Down-cast to OGRMultiLineString*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiLineString. Depuis

Down-cast to OGRMultiPolygon*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiPolygon. Depuis

Down-cast to OGRMultiPolygon*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiPolygon. Depuis

Down-cast to OGRMultiCurve*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiCurve and derived types. Depuis

Down-cast to OGRMultiCurve*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiCurve and derived types. Depuis

Down-cast to OGRMultiSurface*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiSurface and derived types. Depuis

Down-cast to OGRMultiSurface*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbMultiSurface and derived types. Depuis

Down-cast to OGRPolyhedralSurface*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbPolyhedralSurface or wkbTIN. Depuis

Down-cast to OGRPolyhedralSurface*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbPolyhedralSurface or wkbTIN. Depuis

Down-cast to OGRTriangulatedSurface*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbTIN. Depuis

Down-cast to OGRTriangulatedSurface*.

Implies prior checking that wkbFlatten(getGeometryType()) == wkbTIN. Depuis