Saya memiliki shapefile poligon dan file CSV lain yang berisi daftar titik sebagai (Lat, Lng) berpasangan ..
Saya ingin memeriksa setiap pasangan (lat, lng) dari file CSV yang poligonnya berada di dalam ..
Shapefile diproyeksikan dan file proj berbunyi seperti ini:
PROJCS["Transverse_Mercator",GEOGCS["GCS_OSGB 1936",
DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["Meter",1]]
Rencana saya adalah sebagai berikut:
- Baca shapefile menggunakan
readShapePoly
fungsi dalamMapTools
paket R. - Baca titik koordinat dari file CSV ke dalam dataframe dan konversikan ke SpatialPointsDataFrame
- Gunakan
over
fungsi untuk menentukan poligon yang berada di dalamnya.
Untuk melakukannya, saya perlu menentukan proj4string
saat memuat shapefile di langkah 1 dan juga mengubah koordinat dari file CSV ke sistem proyeksi yang sama menggunakan spTransform
fungsi sebelum menerapkan over
fungsi di langkah 3 karena mengharuskan titik dan poligon harus berada di bawah sistem proyeksi yang sama.
Adakah ide tentang nilai apa yang seharusnya untuk konten file proj yang ditunjukkan di atas?
coordinate-system
shapefile
r
proj
Moustafa Alzantot
sumber
sumber
readOGR
fungsi saya selalu mendapatkan Tidak dapat membuka kesalahan filesummary
fungsi untukSpatialPolygonDataFrame
objek memberi saya nilai yang benar untukproj4string
Jawaban:
Proj4string adalah string PROJ4 crs yang valid .
lihat Bagaimana saya bisa mendapatkan string proj4 atau kode EPSG dari file .prj shapefile? dan Shapefile PRJ ke PostGIS SRID lookup table?
pendeknya:
Atau
hasilnya adalah EPSG: 27700 jadi versi pertama dari string PROJ4 adalah
" + init = epsg: 27700 "
`Atau
klik pada Proj4 dan string PROJ4 yang lengkap adalah:
" + proj = tmerc + lat_0 = 49 + lon_0 = -2 + k = 0,9996012717 + x_0 = 400000 + y_0 = -100000 + ellps = lapang + datum = OSGB36 + unit = m + no_defs "
sumber
Berikut adalah situs web yang sangat berguna untuk mengambil kode EPSG untuk proyeksi yang diberikan. Dalam kasus Anda, proyeksi adalah "EPSG: 27700". Jika Anda memiliki proyeksi yang ditentukan untuk shapefile Anda dapat menetapkan proyeksi ketika Anda membuat SpatialPointsDataFrame dan kemudian menggunakan definisi proyeksi dari shapefile yang Anda impor. Menggunakan "readOGR" dari paket rgdal akan mempertahankan definisi proyeksi. Berikut ini adalah contoh penetapan dan penarikan string koordinat pada data kelas sp.
sumber