Saya mengumpulkan nilai X dan Y dari layanan web (Twitter) melalui skrip python. Dalam jangka panjang, ini akan berlangsung selama beberapa bulan dan saya bermaksud berhenti di sekitar angka 6 juta poin.
Koord asli yang saya dapatkan adalah WGS84 secara geografis, tetapi saya perlu mengubahnya menjadi WGS Web Mercator yang diproyeksikan. Saya nantinya akan menerbitkan tabel ini ke layanan peta ArcGIS Server dan menyimpannya.
Ini adalah proyek pribadi untuk mempelajari python tanpa batas waktu dan bertanya-tanya apakah itu akan menjadi ide yang baik untuk hanya menggunakan tipe spasial asli dari SQL Server?
Rencana saya yang belum teruji:
- BUAT tabel dengan SSMS, dengan pengaturan bidang GEOMETRI (dan beberapa atribut lainnya)
- Dalam skrip python saya, gunakan arcpy atau pyproj untuk mengonversi lat / lons di WGS84 menjadi WGS84 Web Mercator (atau bisakah saya menghindari ini entah bagaimana dan semua dapat dicapai dengan SQL?)
- Manfaatkan pymssql untuk INSERT catatan, dan masukkan titik ke dalam bidang GEOMETRI dalam tabel.
Pertanyaan saya adalah, apa yang akan menjadi pendekatan yang baik, sederhana dan efisien untuk mengambil sepasang lat / lons di WGS84, dan kemudian memasukkan mereka ke dalam tabel SQL Server yang menggunakan tipe spasial SQL Server dan memiliki lapisan poin yang dihasilkan yang ada di WGS84 Web Mercator, sehingga saya dapat membuat / meminta mereka di ArcGIS Desktop 10.1?
Saya memang memiliki akses ke arcpy / ArcSDE 10.1 jika perlu tetapi berharap untuk menggunakan ini sebagai contoh tidak memerlukan ArcSDE.
Jawaban:
Saya melanjutkan rencana saya, sebagaimana dinyatakan dalam Pertanyaan.
Untuk tujuan memasukkan poin ke dalam SQL Server, postingan ini sangat berguna bagi saya.
Inilah yang bekerja untuk saya:
sumber
Saya tidak yakin dengan seluruh persyaratan alur kerja Anda, tetapi jika Anda memiliki akses ke arcpy, maka Anda dapat menggunakan
arcpy.ConvertCoordinateNotation_management
untuk mengambil tabel poin SQL Anda dan mengubahnya menjadi kelas fitur titik pada proyeksi apa pun yang Anda perlukan. Tidak perlu untuk SQL Jenis spasial server atau ArcSDE.sumber
Saya berasumsi bahwa Anda memiliki satu atau beberapa file besar yang diisi dengan xy dan beberapa data lainnya. Pertama, setahu saya tidak ada dukungan proyeksi di MS SQL (2008 r2 atau lebih baru). ada solusi pihak ketiga dan pustaka proj.net yang dapat Anda gunakan untuk membangunnya. Oleh karena itu saya melihat dua opsi ketika menyimpan data ke basis data, jika menggunakan MS SQL, Anda perlu memproyeksikan ulang data ke dalam proyeksi yang diinginkan sebelum memasukkan basis data atau Anda hanya membuang data ke dB PostGIS dan melakukan transformasi di sana. PostGIS memiliki toolset yang jauh lebih baik dalam database daripada MS SQL
sumber
geoAlchemy seharusnya melakukan pekerjaan menggunakan GeometryColumns. Namun, saya tidak dapat membuatnya berfungsi pada Windows / Python 2.7 / sqlalchemy 0.9.6 karena AttributeError: ketik objek 'ColumnProperty' tidak memiliki atribut 'ColumnComparator'
sumber