Я собираю значения X и Y из веб-службы (Twitter) с помощью скрипта Python. В конечном счете, это будет продолжаться в течение нескольких месяцев, и я намерен остановиться на отметке в 6 миллионов пунктов.
Исходные координаты, которые я получаю, являются географическими WGS84, но мне нужно будет преобразовать их в спроектированный WGS Web Mercator. Позже я опубликую эту таблицу в картографическом сервисе ArcGIS Server и кэширую ее.
Это личный проект по изучению Python без каких-либо крайних сроков, и он задавался вопросом, будет ли хорошей идеей использовать исключительно пространственные типы из SQL Server?
Мой текущий непроверенный план:
- СОЗДАТЬ таблицу с SSMS, с настройкой поля GEOMETRY (и некоторыми другими атрибутами)
- В моем скрипте на python используйте arcpy или pyproj для преобразования лат / лонов в WGS84 в WGS84 Web Mercator (или я могу как-то избежать этого, и все это достижимо с помощью SQL?)
- Используйте pymssql для вставки записей и вставьте точки в поле GEOMETRY в таблице.
Мой вопрос заключается в том, что было бы хорошим, простым и эффективным подходом взять пару широт / долгот в WGS84, а затем вставить их в таблицу SQL Server, используя пространственные типы SQL Server, и получить результирующий слой точек, который находится в WGS84 Web Mercator, чтобы я мог отображать / запрашивать их в ArcGIS Desktop 10.1?
У меня есть доступ к arcpy / ArcSDE 10.1, если это необходимо, но я надеялся использовать его в качестве примера, не требующего ArcSDE.
Ответы:
Я выполнил свой план, как указано в вопросе.
В целях вставки точек в SQL Server этот пост был очень полезен для меня.
Вот что сработало для меня:
источник
Я не уверен в ваших требованиях к рабочему процессу, но если у вас есть доступ к arcpy, вы можете использовать
arcpy.ConvertCoordinateNotation_management
таблицу точек SQL и преобразовать их в класс точечных объектов в любой проекции, в которой вы нуждаетесь. SQL не нужен Пространственные типы сервера или ArcSDE.источник
Я предполагаю, что у вас есть один или несколько больших файлов, заполненных xy и некоторыми другими данными. Во-первых, насколько мне известно, нет поддержки проекций в MS SQL (2008 r2 или новее). есть сторонние решения и библиотека proj.net, которую вы можете использовать для ее создания. Поэтому при сохранении данных в базу данных я вижу два варианта: если вы используете MS SQL, вам нужно перепроецировать данные в требуемую проекцию перед вставкой базы данных или просто сбросить данные в базу данных PostGIS и выполнить там преобразование. PostGIS имеет гораздо лучший набор инструментов в базе данных, чем MS SQL
источник
Предполагается, что geoAlchemy выполняет эту работу, используя GeometryColumns. Однако я не смог заставить его работать на Windows / Python 2.7 / sqlalchemy 0.9.6 из-за AttributeError: тип объекта 'ColumnProperty' не имеет атрибута 'ColumnComparator'
источник