でパッケージのover()
機能を使いたい。sp
R
を割り当てますCRS
。
#say that polygon is EPSG3857 (Web Mercator PROJECTION)
proj4string(finalPolygon) <- CRS("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs")
そしてすべてが良さそうです。
str(finalPolygon)
> ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
> .. .. ..@ projargs: chr "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"
CRS
のを確認してみましょうallPoints
。
str(allPoints)
>..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
> .. .. ..@ projargs: chr "+init=epsg:3857 +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_def"
したがって、over()
今関数を実行すると
pointsInPolygon <- over(allPoints, finalPolygon))
エラーが発生します:
同一のCRS(x, y)はTRUEではありません
ここで何が問題なのかはわかっていると思いますが、解決方法がわかりません。
よく見ると、allPoints
さらにいくつかの単語があります-つまり+init=epsg:3857
. ここで、スロット内の文字列が同一であるかどうかを単純に比較することを読みました。ご覧のとおり、それらは同じです (Spatial リファレンスのクレアチンはまったく同じです) が、文字列は作成方法が原因でわずかに異なります。sp package
CRS
CRS
私が使うとき
#say that points is EPSG3857 (Web Mercator PROJECTION)
proj4string(spatialEPSG3857) <- CRS("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs")
それは私にallPoints
これを返します:
proj4string<-
( 、値 = )内の警告*tmp*
: 新しい CRS が既存の CRS を持つオブジェクトに割り当てられました: +init=epsg:3857 +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0= 0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs 再投影なし。再投影には、パッケージ rgdal の関数 spTransform を使用します
関数はover()
機能しますが、返されるものは意味がありません。
この問題にどう立ち向かう!?