Saya ingin menemukan titik pusat dari semua tanah di bumi.
Yang saya coba sampai sekarang adalah mengunduh shapefile dari semua negara dan bagian kutub bumi. Kemudian saya mengimpor shapefile itu ke database SQL Server 2008 dan kemudian mencoba menjalankan beberapa pertanyaan untuk menemukan titik itu tetapi semuanya sia-sia.
Bagaimana saya bisa menghitung Centroid dari semua daratan di bumi menggunakan SQL Server?
centroids
sql-server-spatial
Sponge Kamerad
sumber
sumber
Jawaban:
Ini mungkin paling mudah dilakukan dengan perhitungan raster, karena pusat massa permukaan tanah ditemukan (menurut definisi) dengan rata-rata koordinat geosentris (X, Y, Z), menimbangnya berdasarkan luas lahan. Rata-rata dilakukan dengan menggunakan statistik zona .
Untuk mendapatkan koordinat ini dan faktor skala area, hitung kisi-kisi berikut dalam koordinat geografis yang mencakup semua area lahan dengan resolusi yang diinginkan (saya menggunakan sel 0,1 derajat, yang membentuk kisi 3600 x 1800 yang mencakup seluruh bumi):
[Bujur] adalah koordinat pertama.
[Latitude] adalah koordinat kedua.
[X] adalah Cos ([Longitude]) * Cos ([Latitude]).
[Y] adalah Dosa ([Bujur]) * Cos ([Lintang]).
[Z] adalah Dosa ([Latitude]).
[F] adalah Cos ([Latitude]). Ini adalah faktor skala area.
(Perhatikan bahwa tidak perlu untuk mengalikan salah satu dari [X], [Y], atau [Z] dengan jari-jari bumi. Akibatnya kita menghitung centroid dari model bola bumi yang berskala sempurna. Posisi centroid pada model akan menjadi posisi skala dari centroid yang diinginkan.)
Hitung sarana zonal dari [X] * [F], [Y] * [F], dan [Z] * [F]. Ketika saya melakukan ini dengan sebuah shapefile yang menunjukkan semua area daratan utama (termasuk Antartika), dengan bujur mulai dari 0 hingga 360 derajat, rata-rata zona masing-masing adalah -0.1204, -0.0661, dan 0.1356.
(Atau Anda dapat memproyeksi ulang [X], [Y], dan [Z] ke dalam proyeksi dengan luas yang sama dan menghitung sarana zona mereka secara langsung tanpa menggunakan bobot bidang dengan [F]. Lakukan yang mana yang lebih mudah dalam GIS Anda.)
Seperti yang kita duga, centroid ini terletak jauh lebih dekat ke pusat bumi pada (0, 0, 0) daripada pada permukaannya. Jika kita ingin memetakannya, kita dapat menghitung garis lintang dan bujurnya dan mengabaikan kedalamannya. Garis bujur suatu titik (X, Y, Z) ditentukan oleh (X, Y) saja dan biasanya dihitung sebagai arctangentnya; lintang ditentukan oleh Sqrt (X ^ 2 + Y ^ 2) dan Z dan biasanya dihitung sebagai arctangent mereka. Saya mendapatkan lokasi (208.77, 44.63) (yaitu 28.77 derajat bujur timur, 44.63 derajat lintang utara). Ini terletak di dekat pantai timur Rumania.
Peta ini dalam koordinat geografis: koordinat horizontal adalah bujur dan koordinat vertikal adalah lintang. Latar belakang menggambarkan kotak koordinat X. Centroid terletak di bawah penanda merah di kanan tengah.
Jika itu tidak terlihat seperti pusat massa lahan bagi Anda, periksalah dari lokasi yang berbeda, seperti overhead langsung:
Bagian-bagian yang tidak terlihat dari Amerika Serikat, Amerika Tengah, dan Selatan akan lebih dari mengimbangi daratan yang terlihat; Antartika dan Australia mengembalikan keseimbangan. Hasil ini terlihat masuk akal bagi saya. Hasil Anda mungkin sedikit berbeda tergantung pada skala dan akurasi data massa lahan Anda, resolusi grid Anda, dan apakah Anda menggunakan model bumi bulat atau ellipsoidal. (Faktor area [F] membutuhkan perhitungan yang lebih terlibat dalam model ellipsoidal.)
Keuntungan dari solusi berbasis grid menjadi jelas dalam generalisasi pertanyaan ini. Misalnya, dengan mengganti [F] (kisi "jumlah lahan") dengan kisi yang mewakili jumlah total sesuatu yang lain per sel, Anda dapat menghitung centroid tertimbang. Jika Anda memiliki kisi kepadatan populasi [P] maka [F] * [P] sebanding dengan total populasi; menggunakan [F] * [P] sebagai pengganti [F] dalam perhitungan ini akan menghasilkan centroid populasi dunia.
sumber