2016-05-12 58 views
0

鑑於米蘭的區域的一組點(經度和緯度),意大利我要決定哪些「鄰居」的每一點屬於 這裏是我曾嘗試鑑於shape文件,瞭解其中的多邊形點是

​​

所以我的第一個猜測是:

over(latlon, mn.zip.map) 

當然,這是失敗的,當我試圖

summary(mn.zip.map) 
Object of class SpatialPolygonsDataFrame 
Coordinates: 
     min  max 
x 1503202 1521750 
y 5025952 5042528 
Is projected: NA 
proj4string : [NA] 
Data attributes: .... 

    summary(latlon) 
Object of class SpatialPoints 
Coordinates: 
      min  max 
lat 45.391091 45.534113 
lon 9.046796 9.274482 
Is projected: NA 
proj4string : [NA] 
Number of points: 155226 

所以我試着爲:

map<-readOGR(dsn="C:...",layer="NILZone") #wHERE I FOUND THE RIGHT PARAMETERS TO CRS 

coordinates(latlon) = ~lat+lon 
proj4string(mn.zip.map) <- CRS("+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996  +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs ") 
mn.zip.map <- spTransform(mn.zip.map, CRS("+proj=longlat")) 
proj4string(latlon) <- CRS(proj4string(mn.zip.map)) 
head(over(latlon, mn.zip.map)) 

    FID_1 FID_1_1 ID_NIL NIL AreaHA AreaMQ 
1 NA  NA  NA <NA>  NA  NA 
2 NA  NA  NA <NA>  NA  NA 
3 NA  NA  NA <NA>  NA  NA 
4 NA  NA  NA <NA>  NA  NA 
5 NA  NA  NA <NA>  NA  NA 
6 NA  NA  NA <NA>  NA  NA 

爲什麼發生這種情況的任何猜測?

非常感謝你,對不起,我很長時間的問題!

編輯:這裏你可以下載一個archive.zip,其中包含幾個形狀和米蘭社區的其他信息的文件和一個文件latlon.txt,其中有30個點,我有興趣分類成一個文件附近

https://www.dropbox.com/s/l935nm3edhn5cc7/Archive.zip?dl=0

@ G.Cocca我改變CRS的參數(......)現在的地區應重疊!

[email protected] 
    min  max 
x 9.040939 9.278398 
y 45.386074 45.535303 

[email protected] 
     min  max 
lat 45.391091 45.534113 
lon 9.046796 9.274482 

但仍然沒有結果!

+0

您的示例不具有可重複性,如果人們有數據可玩,您將得到更好的答案。您是否可以通過提供可用數據或通過使用包含在您使用的R包中的數據的示例來使其可重現? –

+0

謝謝!我添加了一個鏈接來下載我的文件樣本 – user5609462

+0

你做了什麼沒有錯。只是你的多邊形和你的點不覆蓋。請參閱'mn.zip.map @ bbox'和'latlon @ bbox' –

回答

1

要打開一個或兩個註釋成一個答案,這裏有一些提示。要在兩個數據集之間進行任何空間分析,它們必須共享相同的座標參考系(CRS)。

因此,無論是在+proj=longlat還是在預計的CRS(即其中一個數據集是tmerc,這是Transverse Mercator projection)。如問題所示,spTransform是將幾何數據從一個CRS轉換到另一個的好方法。

最後,如果使用+proj=longlat,軸順序是笛卡爾(x和y)或(長LAT)。因此,例如,使用coordinates(latlon) = ~lon+lat。這是一個非常常見的「陷阱」。