Zbieram wartości X i Y z usługi internetowej (Twitter) za pomocą skryptu python. W dłuższej perspektywie potrwa to kilka miesięcy i zamierzam zatrzymać się na poziomie około 6 milionów punktów.
Oryginalne współrzędne, które otrzymuję, to geograficzny WGS84, ale będę musiał przekonwertować je na rzutowany WGS Web Mercator. Później opublikuję tę tabelę w usłudze map ArcGIS Server i buforuję ją.
To jest osobisty projekt do nauki Pythona bez terminu i zastanawiał się, czy dobrym pomysłem byłoby korzystanie wyłącznie z rodzimych typów przestrzennych z SQL Server?
Mój obecny nieprzetestowany plan:
- UTWÓRZ tabelę za pomocą SSMS, z ustawieniem pola GEOMETRIA (i innymi atrybutami)
- W moim skrypcie pythonowym użyj arcpy lub pyproj do konwersji lat / lons w WGS84 na WGS84 Web Mercator (czy mogę to jakoś uniknąć i to wszystko jest możliwe dzięki SQL?)
- Skorzystaj z pymssql, aby wstawić rekordy i wstaw punkty do pola GEOMETRIA w tabeli.
Moje pytanie brzmi: jakie byłoby dobre, proste i wydajne podejście, aby wziąć parę lat / lons w WGS84, a następnie wstawić je do tabeli SQL Server przy użyciu typów przestrzennych SQL Server i uzyskać wynikową warstwę punktów, która jest w WGS84 Web Mercator, dzięki czemu mogę renderować / sprawdzać je w ArcGIS Desktop 10.1?
Mam dostęp do arcpy / ArcSDE 10.1, jeśli zajdzie taka potrzeba, ale chciałem użyć tego jako przykładu niewymagania ArcSDE.
Odpowiedzi:
Zrealizowałem mój plan, jak stwierdzono w pytaniu.
W celu wstawienia punktów do SQL Server ten post był dla mnie bardzo przydatny.
Oto, co zadziałało dla mnie:
źródło
Nie jestem pewien twoich wymagań dotyczących przepływu pracy, ale jeśli masz dostęp do arcpy, możesz użyć
arcpy.ConvertCoordinateNotation_management
swojej tabeli punktów SQL i przekonwertować je na klasę obiektów punktowych przy dowolnej projekcji, w której potrzebujesz. Nie ma potrzeby SQL Typy przestrzenne serwera lub ArcSDE.źródło
Zakładam, że masz jeden lub kilka dużych plików wypełnionych xy i kilka innych danych. Po pierwsze, o ile wiem, nie ma obsługi projekcji w MS SQL (2008 R2 lub nowszy). istnieją rozwiązania innych firm i biblioteka proj.net, których można użyć do zbudowania jednego. Dlatego widzę dwie opcje podczas przechowywania danych w bazie danych, jeśli używasz MS SQL, musisz ponownie skierować dane do pożądanej projekcji przed wstawieniem bazy danych lub po prostu zrzuć dane do bazy danych PostGIS i tam dokonaj transformacji. PostGIS ma o wiele lepszy zestaw narzędzi w bazie danych niż MS SQL
źródło
geoAlchemy ma wykonywać zadanie za pomocą GeometryColumns. Nie mogłem jednak sprawić, aby działał w systemie Windows / Python 2.7 / sqlalchemy 0.9.6 z powodu AttributeError: typ obiektu „ColumnProperty” nie ma atrybutu „ColumnComparator”
źródło