গ্রিডের সাথে ওভারলেলিং স্পেসিয়াল বহুভুজ এবং এটি পরীক্ষা করে যা গ্রিড উপাদান নির্দিষ্ট স্থানাঙ্কগুলি আর [বদ্ধ] ব্যবহার করে অবস্থিত


32

কেউ কীভাবে আর ব্যবহার করতে পারে

  1. 200 মিটার স্কোয়ার / উপ-বহুভুজগুলিতে একটি শেফফিল বিভক্ত করুন ,
  2. নীচের মূল মানচিত্রের উপরে এই গ্রিডটি (প্রতিটি বর্গক্ষেত্রের জন্য ID নম্বর সহ) প্লট করুন এবং
  3. বর্গ নির্দিষ্ট নির্দিষ্ট ভৌগলিক স্থানাঙ্কে অবস্থিত যা মূল্যায়ন ।

আমি জিআইএসে একটি শিক্ষানবিস এবং এটি সম্ভবত একটি প্রাথমিক প্রশ্ন, তবে আর কীভাবে এটি করা যায় তার কোনও টিউটোরিয়াল আমি পাইনি

আমি এখন পর্যন্ত যা করেছি তা হ'ল এনওয়াইসির একটি শেফফিল লোড করা এবং কিছু অনুকরণীয় ভৌগলিক স্থানাঙ্কের প্লট করা।

আমি নীচের ডেটা সহ এটি কীভাবে একটি উদাহরণ (আর কোড) সন্ধান করছি।

# Load packages 
library(maptools)

# Download shapefile for NYC
# OLD URL (no longer working)
# shpurl <- "http://www.nyc.gov/html/dcp/download/bytes/nybb_13a.zip"
shpurl <- "https://www1.nyc.gov/assets/planning/download/zip/data-maps/open-data/nybb_13a.zip"

tmp    <- tempfile(fileext=".zip")
download.file(shpurl, destfile=tmp)
files <- unzip(tmp, exdir=getwd())

# Load & plot shapefile
shp <- readShapePoly(files[grep(".shp$", files)])
plot(shp)

# Define coordinates 
points_of_interest <- data.frame(y=c(919500, 959500, 1019500, 1049500, 1029500, 989500), 
                 x =c(130600, 150600, 180600, 198000, 248000, 218000),
                 id  =c("A"), stringsAsFactors=F)

# Plot coordinates
points(points_of_interest$y, points_of_interest$x, pch=19, col="red")

এখানে চিত্র বর্ণনা লিখুন


উত্তর:


36

এখানে একটি SpatialGridজিনিস ব্যবহার করে একটি উদাহরণ দেওয়া হয়েছে :

### read shapefile
library("rgdal")
shp <- readOGR("nybb_13a", "nybb")

proj4string(shp)  # units us-ft
# [1] "+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 
# +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0=0 +datum=NAD83
# +units=us-ft +no_defs +ellps=GRS80 +towgs84=0,0,0"

### define coordinates and convert to SpatialPointsDataFrame
poi <- data.frame(x=c(919500, 959500, 1019500, 1049500, 1029500, 989500),
                  y=c(130600, 150600, 180600, 198000, 248000, 218000),
                  id="A", stringsAsFactors=F)
coordinates(poi) <- ~ x + y
proj4string(poi) <- proj4string(shp)

### define SpatialGrid object
bb <- bbox(shp)
cs <- c(3.28084, 3.28084)*6000  # cell size 6km x 6km (for illustration)
                                # 1 ft = 3.28084 m
cc <- bb[, 1] + (cs/2)  # cell offset
cd <- ceiling(diff(t(bb))/cs)  # number of cells per direction
grd <- GridTopology(cellcentre.offset=cc, cellsize=cs, cells.dim=cd)
grd
# cellcentre.offset 923018 129964
# cellsize           19685  19685
# cells.dim              8      8

sp_grd <- SpatialGridDataFrame(grd,
                               data=data.frame(id=1:prod(cd)),
                               proj4string=CRS(proj4string(shp)))
summary(sp_grd)
# Object of class SpatialGridDataFrame
# Coordinates:
#      min     max
# x 913175 1070655
# y 120122  277602
# Is projected: TRUE
# ...

এখন আপনি overসেল আইডিগুলি পেতে প্রয়োগকৃত- আদর্শটি ব্যবহার করতে পারেন :

over(poi, sp_grd)
#   id
# 1 57
# 2 51
# 3 38
# 4 39
# 5 14
# 6 28

সেল আইডি সহ শেফফিল এবং গ্রিড প্লট করতে:

library("lattice")
spplot(sp_grd, "id",
       panel = function(...) {
         panel.gridplot(..., border="black")
         sp.polygons(shp)
         sp.points(poi, cex=1.5)
         panel.text(...)
       })

spplot1

বা রঙ / রঙ কী ছাড়া:

library("lattice")
spplot(sp_grd, "id", colorkey=FALSE,
       panel = function(...) {
         panel.gridplot(..., border="black", col.regions="white")
         sp.polygons(shp)
         sp.points(poi, cex=1.5)
         panel.text(..., col="red")
       })

spplot2


এটি আমার কাছে উত্তর বলে মনে হচ্ছে তবে আপনি যদি অন্যরকম কিছু খুঁজছেন। স্ট্যাকওভারফ্লোতে আর ট্যাগটি ব্যবহার করে দেখুন stackoverflow.com/search?q=R+tag
ব্র্যাড নেসোম

@ আরসিএস এই কোডটি দেখতে আমি দেখতে চাই ঠিক তেমন দেখাচ্ছে তবে আমার শেফফাইলটি অন্য এক প্রক্ষেপণে রয়েছে: proj4string (DK_reg1) [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0" এই সমীক্ষার 1000 টি সমান গ্রিড কোষে এই আকারের ফাইলগুলি কীভাবে ভাঙ্গতে হবে সে সম্পর্কে কারও কি কোনও পরামর্শ আছে? এবং তারপরে এলোমেলোভাবে তাদের 100 টি নির্বাচন করে তাদের হাইলাইট করবেন?
আমি দেল তোরো

9

প্রশ্নে সরবরাহ করা নিউইয়র্ক ডেটাসেট আর ডাউনলোডের জন্য উপলব্ধ নেই। আমি এসএফ প্যাকেজটি থেকে এনসি ডেটাসেটটি এসএফ প্যাকেজ ব্যবহার করে কোনও সমাধান দেখানোর জন্য ব্যবহার করি:

library(sf)
library(ggplot2)

# read nc polygon data and transform to UTM 
nc <- st_read(system.file('shape/nc.shp', package = 'sf')) %>%
  st_transform(32617)

# random sample of 5 points
pts <- st_sample(nc, size = 5) %>% st_sf

# create 50km grid - here you can substitute 200 for 50000
grid_50 <- st_make_grid(nc, cellsize = c(50000, 50000)) %>% 
  st_sf(grid_id = 1:length(.))

# create labels for each grid_id
grid_lab <- st_centroid(grid_50) %>% cbind(st_coordinates(.))

# view the sampled points, polygons and grid
ggplot() +
  geom_sf(data = nc, fill = 'white', lwd = 0.05) +
  geom_sf(data = pts, color = 'red', size = 1.7) + 
  geom_sf(data = grid_50, fill = 'transparent', lwd = 0.3) +
  geom_text(data = grid_lab, aes(x = X, y = Y, label = grid_id), size = 2) +
  coord_sf(datum = NA)  +
  labs(x = "") +
  labs(y = "")

# which grid square is each point in?
pts %>% st_join(grid_50, join = st_intersects) %>% as.data.frame

#>   grid_id                 geometry
#> 1      55 POINT (359040.7 3925435)
#> 2      96   POINT (717024 4007464)
#> 3      91 POINT (478906.6 4037308)
#> 4      40 POINT (449671.6 3901418)
#> 5      30 POINT (808971.4 3830231)

এখানে চিত্র বর্ণনা লিখুন


ধন্যবাদ। তাদের ওয়েবপৃষ্ঠায় পরিবর্তনগুলি পুনরায় প্রতিস্থাপন করতে আমি আমার প্রশ্নের লিঙ্কটি আপডেট করেছি। এখন এটি আবার কাজ করা উচিত।
majom

আমার সত্যিই sfপ্যাকেজটি ব্যবহার শুরু করা দরকার । এটা সত্যিই দারুন!
ফিলিপোরল্যান্ডো

রাষ্ট্রীয় বহুভুজের সাথে ছেদ করা গ্রিড কোষগুলি কীভাবে প্লট করার কোনও সহজ উপায় আছে?
ফিলিপোরল্যান্ডো

st_intersication (গ্রিড_50, এনসি) এটি করা উচিত
sebdalgarno

একই প্রতিলিপি তৈরি করার কোনও উপায় আছে কি তবে প্রতিটি গ্রিডের কেন্দ্রস্থলে পয়েন্টগুলি, তাই গ্রিডের কেন্দ্র হিসাবে ল্যাট / দীর্ঘ দিয়ে গ্রিড আঁকা হচ্ছে @sebdalgarno
বিজয় রমেশ

2

আপনি যদি আর রেস্টার প্যাকেজটির দিকে নজর না দিয়ে থাকেন তবে এর কাছে ভেক্টর জিআইএস অবজেক্টে / থেকে রূপান্তর করার সরঞ্জাম রয়েছে যাতে আপনি ক) 200x200m কোষ সহ একটি রাস্টার তৈরি করতে (গ্রিড) তৈরি করতে পারেন এবং খ) এর সাথে বহুভুজের সেটকে রূপান্তর করতে পারেন) কোনও ধরণের লজিকাল আইডি। সেখান থেকে আমি পয়েন্টগুলি এবং বহুভুজ গ্রিডকে ছেদ করতে সহায়তা করার জন্য এসপি প্যাকেজটি দেখব। এই http://cran.r-project.org/web/packages/sp/vignettes/over.pdf পৃষ্ঠাটি একটি ভাল শুরু হতে পারে। স্প প্যাকেজ ডক্সের মধ্যে ঘুরে বেড়ানো আপনি স্প্যাটিয়ালগ্রিড-ক্লাস দিয়ে শুরু করতে সক্ষম হতে পারেন এবং কেবল রাস্টার অংশটি পুরোপুরি এড়িয়ে যেতে পারেন।


-1

"জিআইএস মহাবিশ্ব" জটিল এবং এর অনেক মান রয়েছে যা আপনার ডেটা অবশ্যই মেনে চলতে হবে। সমস্ত "জিআইএস সরঞ্জাম" জিআইএস-স্ট্যান্ডার্ড দ্বারা আন্তঃসংযোগ স্থাপন করে । সমস্ত "গুরুতর জিআইএস ডেটা" আজ (2014) একটি ডেটাবেজে সংরক্ষিত আছে

অন্যান্য FOSS সরঞ্জামের সাথে একটি জিআইএস প্রসঙ্গে "আর" ব্যবহারের সেরা উপায়টি এসকিউএলে এম্বেড করা আছে। সেরা সরঞ্জামগুলি হ'ল পোস্টগ্র্যাসকিউএল 9. এক্স ( পিএল / আর দেখুন ) এবং পোস্টজিআইএস


তুমি উত্তর দাও:

  • শেপ ফাইলগুলি আমদানি / রফতানি করতে: ব্যবহার করুন shp2pgsqlএবংpgsql2shp
  • জন্য "200 মিটার স্কোয়ার / উপ-বহুভুজ একটি আকৃতি ফাইল বিভক্ত": দেখুন ST_SnapToGrid(), ST_AsRaster()ইত্যাদি আমরা ভালভাবে বুঝতে প্রয়োজন আপনার চাহিদা একটি "রেসিপি" মধ্যে প্রকাশ করার।
  • আপনি বলছেন যে "ভৌগলিক স্থানাঙ্কগুলি অবস্থিত" দরকার .. সম্ভবত ST_Centroid()স্কোয়ারগুলির (?) ... আপনি "আরও গাণিতিকভাবে" প্রকাশ করতে পারেন তাই আমি বুঝতে পারি।

... সম্ভবত আপনার কোনও রাস্টার রূপান্তর দরকার নেই, কেবলমাত্র নিয়মিত-নমুনাযুক্ত পয়েন্টের একটি ম্যাট্রিক্স।


কোনও আধ্যাত্মিক উপায় হল পিএল / আর ছাড়াই আর ব্যবহার করা , আপনার সাধারণ বাহ্যিক সংকলকটিতে: কেবল আপনার বহুভুজকে রূপান্তর করুন এবং আকার হিসাবে বা ডাব্লুকেটি (দেখুন ST_AsText) হিসাবে রফতানি করুন , তারপরে অ্যাডকে বা অন্য কোনও ফিল্টার দিয়ে আর ফর্ম্যাটে রূপান্তর করুন।


1
আপনার সাহায্যের জন্য ধন্যবাদ. যাইহোক, আমি দৃ strongly়ভাবে একটি সমাধান পছন্দ করব যা সম্পূর্ণরূপে আর এবং বিদ্যমান প্যাকেজগুলির উপর নির্ভর করে। আমি যখন 200 মি * 200 মি সাবপলিগনগুলিতে শেপ ফাইলটি বিভক্ত করতে সক্ষম হয়ে থাকি তখন আমি কোন বহুগুণে point.in.polygonকোন স্থানাঙ্ক রয়েছে তা যাচাই করতে পারি । আমার সমস্যা হ'ল সেই উপ-বহুভুজগুলিতে আসল শেফফিলটি বিভক্ত করা।
majom
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.