Saya melakukan perhitungan sederhana pada poligon yang dikenal sekitar 6226 km ^ 2 di daerah tersebut. Itu disimpan dalam kolom Geografi (WGS84 SRID).
Pertanyaannya adalah:
select st_astext(col), st_area(col) area from table
dan mengembalikan:
"POLYGON((-180 58.282525588539,-178.916399160189 57.4759784390599,-178.191728834624 58.5761461944577,-180 58.282525588539))" | 5807028547.33813
Area yang dikembalikan (5807028547.33813) tampaknya mm ^ 2 dan bukan km ^ 2? Dokumentasi http://postgis.net/docs/ST_Area.html menyatakan "secara default area ditentukan pada spheroid dengan satuan dalam meter persegi"
Apakah ini kesalahan dokumentasi, atau apakah di atas benar dan saya pada dasarnya salah memahami fungsi?
ST_Area (geometri) menghitung area poligon sebagai WGS1984, TANPA memproyeksikan sama dengan bidang bola / ellipsis (jika Anda menggunakan Geometri tipe sql, bukan Geografi). Hasilnya diukur dalam satuan dalam SRID geometri.
ST_Area (geografi) menghitung area poligon sebagai WGS1984, DENGAN memproyeksikan sama dengan bidang bola / ellipsis (jika Anda menggunakan Geografi tipe sql, bukan Geometri). Hasilnya diukur dalam meter persegi. Untuk mendapatkan dari m 2 hingga km 2 , Anda harus membagi m 2 dengan 1000 2 (1000 meter dalam satu kilometer - kuadrat karena luas, jadi 1000 * 1000 alias 1000 2 ).
ST_Area (geometri, benar / salah) menghitung area (dalam m 2 ) dengan koordinat yang diproyeksikan ke sistem koordinat CylindricalEqualAreaworld (area pelestarian - masuk akal jika Anda ingin menghitung area).
Perbedaan antara benar / salah adalah akurasinya.
ST_Area (geog, false) menggunakan bola yang lebih cepat tetapi kurang akurat.
Katakanlah, ketika saya menggunakan poligon ini:
Saya mendapatkan hasil sebagai berikut:
Saya pikir bagian penting yang harus diambil dari dokumen adalah ini:
Jadi, Anda perlu berhati-hati untuk memilih geografi , dan BUKAN geometri.
Jika Anda menggunakan geometri, Anda PERLU menggunakan kelebihan ST_Area benar / salah.
Di C #, saya mendapatkan lebih atau kurang sama dengan true dengan KnowledoSistemSistem.Projected.World.CylindricalEqualAreaworld, dan false tampaknya menjadi bumi-mean-radius-dunia, sesuatu yang dekat dengan WorldSpheroid.CylindricalEqualAreasphere atau WorldSpheroid.EckertIVsphere, tapi itu off oleh 2m 2 , jadi sepertinya melakukan hal sendiri.
misal Anda mendapatkan close-fit to false dengan mean-radius:
WebMercator adalah sistem koordinat yang digunakan oleh Google-Maps.
Nama resmi untuk sistem koordinat ini adalah EPSG: 3857.
Apa yang tepatnya dilakukan PostGIS, didokumentasikan di sini:
https://postgis.net/docs/ST_Area.html
Dan detail dalam kode sumber dapat ditemukan di sini:
http://postgis.net/docs/doxygen/2.2/dc/d52/geography__measurement_8c_a1a7c48d59bcf4ed56522ab26c142f61d.html
dan di sini:
http://postgis.net/docs/doxygen/2.2/d1/dc0/lwspheroid_8c_a29d141c632f6b46587dec3a1dbe3d176.html#a29d141c632f6b46587dec3a1dbe3d176
Proyeksi Albers:
Proyeksi Area-Sama Silinder:
sumber