Je collecte des valeurs X et Y à partir d'un service Web (Twitter) via un script python. À long terme, cela se déroulera sur une période de plusieurs mois et j'ai l'intention de m'arrêter à environ 6 millions de points.
Les coordonnées d'origine que j'obtiens sont des WGS84 géographiques, mais je devrai les convertir en WGS Web Mercator projeté. Je publierai plus tard cette table sur un service de carte ArcGIS Server et la mettre en cache.
Il s'agit d'un projet personnel pour apprendre le python sans délai et je me demandais si ce serait une bonne idée de n'utiliser que les types spatiaux natifs de SQL Server?
Mon plan actuel non testé:
- CRÉER une table avec SSMS, avec une configuration de champ GÉOMÉTRIE (et quelques autres attributs)
- Dans mon script python, utilisez arcpy ou pyproj pour convertir les lat / lons dans WGS84 en WGS84 Web Mercator (ou puis-je éviter cela en quelque sorte et tout cela est réalisable avec SQL?)
- Utilisez pymssql pour INSÉRER les enregistrements et insérez les points dans le champ GÉOMÉTRIE du tableau.
Ma question est, quelle serait une bonne, simple et efficace approche pour prendre une paire de lat / lons dans WGS84, puis les insérer dans une table SQL Server en utilisant des types spatiaux SQL Server et avoir une couche de points résultante qui est dans WGS84 Web Mercator, pour pouvoir les rendre / interroger dans ArcGIS Desktop 10.1?
J'ai accès à arcpy / ArcSDE 10.1 si besoin est, mais j'espérais l'utiliser comme exemple de ne pas avoir besoin d'ArcSDE.
Réponses:
J'ai poursuivi mon plan, comme indiqué dans la question.
Dans le but d'insérer des points dans SQL Server, ce message m'a été très utile.
Voici ce qui a fonctionné pour moi:
la source
Je ne suis pas sûr de toutes vos exigences de flux de travail, mais si vous avez accès à arcpy, vous pouvez utiliser
arcpy.ConvertCoordinateNotation_management
pour prendre votre table SQL de points et les convertir en une classe d'entités ponctuelles à la projection dans laquelle vous en avez besoin. Pas besoin de SQL Types spatiaux de serveur ou ArcSDE.la source
Je suppose que vous avez un ou plusieurs gros fichiers remplis de xy et d'autres données. Tout d'abord, à ma connaissance, il n'y a pas de support de projection dans MS SQL (2008 r2 ou version ultérieure). il existe des solutions tierces et une bibliothèque proj.net que vous pouvez utiliser pour en créer une. Par conséquent, je vois deux options lors du stockage des données dans la base de données, si vous utilisez MS SQL, vous devez reprojeter les données dans la projection souhaitée avant d'insérer la base de données ou simplement vider les données dans PostGIS db et les transformer. PostGIS a un ensemble d'outils beaucoup plus performant dans la base de données que MS SQL
la source
geoAlchemy est censé faire le travail à l'aide de GeometryColumns. Cependant, je n'ai pas pu le faire fonctionner sur Windows / Python 2.7 / sqlalchemy 0.9.6 en raison d'AttributeError: l'objet de type 'ColumnProperty' n'a pas d'attribut 'ColumnComparator'
la source