Suite

Comment puis-je créer un système de coordonnées projetées personnalisé dans arcpy?


Je souhaite créer mon propre système de coordonnées projetées basé sur l'un des systèmes de coordonnées géographiques et définir des valeurs personnalisées pour les propriétés commelongitude,facteur d'échelleetc.

J'ai trouvé la classe SpatialReference.

Mais je ne peux pas comprendre comment définir le système de coordonnées géographiques qui sera la base de mon système de coordonnées -CGVla propriété est en lecture seule et aucune méthode pour définir sa valeur.

Et aussi, quand j'appellecréerméthode, le résultat estRuntimeError : ERREUR 999999 : Erreur lors de l'exécution de la fonction.

L'article a un exemple avec uniquement la lecture de la propriété existante, mais n'a pas d'exemples avec la création de CS.

Qu'est-ce que je fais mal et où puis-je trouver des exemples de création CS ?

Mon code :

new_sr = arcpy.SpatialReference() new_sr.linearUnitName = u'meters' new_sr.longitude = 30 new_sr.longitudeOf1st = 10 new_sr.longitudeOf2nd = 50 new_sr.longitudeOfOrigin = 30 new_sr.projectionCode = 100500 new_sr.projectionCode = 100500 new_sr.' scaleFactor = 2 new_sr.standardParallel1 = 50 new_sr.standardParallel2 = 60 new_sr.create() # RuntimeError : ERREUR 999999 : Erreur lors de l'exécution de la fonction

Peut-être dois-je définir d'autres propriétés, ou vice versa supprimer inutilement ?


Pour répondre à votre question initiale, 'comment définir le système de coordonnées géographiques qui sera la base de mon système de coordonnées - la propriété GCS est en lecture seule et aucune méthode pour définir sa valeur'

Vous pouvez utiliser un code numérique pour un système de coordonnées projetées ou géographiques lors de la création duRéférence spatialeObjet, comme ceci :

sr = arcpy.SpatialReference (104926)

ESRI fournit une liste des systèmes de coordonnées projetées et géographiques et leurs codes numériques ici. J'ai utilisé 104926 c'est le code pour GCS_Atlas_2000 qui est un système de coordonnées géographiques. Lorsque vous lancez uneRéférence spatialeobjet avec un code numérique un valideRéférence spatialeL'objet est renvoyé. Vous pouvez alors accéder à ses propriétés. Modification d'unRéférence spatialeL'objet peut être assez délicat (voir ici), mais vous pouvez choisir les propriétés que vous souhaitez à partir de la référence spatiale créée pour remplir votre référence spatiale personnalisée.

Vous pouvez au moins exporter votre base référence spatiale avecsr.exportToString()et modifiez manuellement les propriétés que vous souhaitez modifier dans la chaîne et/ou le fichier dans lequel vous avez généré la chaîne. Ce n'est certainement pas l'idéal, mais il fera le travail.


Vous pourriez être intéressé par le récemment ajoutéarcpy.GenerateOptimalCoordinateSystemfonction, voir la doc à https://pro.arcgis.com/en/pro-app/latest/arcpy/functions/generateoptimalcoordinatesystem.htm.