আর - একটি বাউন্ডিংবক্স তৈরি করুন, বহুভুজ শ্রেণিতে এবং প্লটে রূপান্তর করুন


11

আমি NE lat lngএবং SW lat lng। আমার লক্ষ্যটি সহজ, আমি আরস্টুডিও ব্যবহার করছি এবং আমি উপরের দুটি লট এবং লম্বা থেকে একটি বাউন্ডিং বক্স তৈরি করতে চাই এবং তারপরে বহুভুজ তৈরি করতে চাই এবং আমি বর্গাকার বহুভুজের মধ্যে এলোমেলো পয়েন্ট যুক্ত করতে চাই। আমার কাছে সিএসভি ফাইলে নেল্যাট / এলএনজি এবং এসডাব্লু-ল্যাট / এলএনজি রয়েছে যা আমি একটি ডেটা.ফ্রেমে আমদানি করতে পারি।

শুরু করার জন্য আমার কেবল একটু গাইডেন্স দরকার, আমি আর ভাষায় খুব নতুন, আমি যেটা অভ্যস্ত তা তার থেকে আলাদা।

এখনও পর্যন্ত আমার কাছে এটি রয়েছে:

coords = cbind(78.46801, 19.53407)
coordsmax = cbind(78.83157, 19.74557 )
sp = SpatialPoints(coordsmax)
sp2 = SpatialPoints(coords)

r1 = rbind(coords, coordsmax[1, ])  # join
P1 = Polygon(r1)
Ps1 = Polygons(list(P1), ID = "a")
plot(Ps1)

আমি কেবল অন্য কোথাও কয়েকটি উদাহরণ দেখেছি তবে আমি 4 কোণার বহুভুজ প্লট করতে পারছি না।


আপনার কেবলমাত্র r1-তে একটি একক সদৃশ সমন্বয় রয়েছে, এর অর্থ 'r1 = rbind (স্থানাঙ্ক, কর্ডম্যাক্স) `??
mdsumner

হ্যাঁ, এটি সংশোধন করেছেন। এটি এখনও কাজ করে না
ব্যবহারকারী 134611

সমস্যাগুলির মধ্যে একবার সাবধানে কাজ করা সমাধান পাওয়ার একটি ভাল উপায়। আমি এটিকে একটি ত্রুটি হিসাবে বিবেচনা করি যা পলিগন () ত্রুটি করে না যখন কেবল দুটি বা একটি স্থানাঙ্ক দেওয়া হয়, আমি এসপি সংখ্যায় এটি উল্লেখ করেছি। আপনার জন্য Q, গ্রন্থাগার (রাস্টার); এসপিএস 1 <- হিসাবে (ব্যাপ্তি (আর 1), "স্প্যাটিয়ালপলিগনস"); প্লট (এসপিএস 1)
এমডসুমনার

আমি দুঃখিত যে আমাকে স্ট্যাকেক্সচেঞ্জের উত্তর ফাংশনটি ব্যবহার করতে হবে তবে আমার খ্যাতি মন্তব্য করার মতো যথেষ্ট নয়। @ dof1985 আপনি বহুভুজ তৈরির জন্য স্থানাঙ্ক হিসাবে (x_min, y_min), (x_max, y_min), (x_max, y_max), (x_max, y_min), (x_min, y_min) ব্যবহার করেন। আমি একই চেষ্টা করেছি, কিন্তু ব্যর্থ হয়েছে তারপরে আমি আপনার উদাহরণটি খুব কাছ থেকে দেখেছি এবং পরীক্ষা করে দেখেছি যে আপনি (x_min, y_min), (x_max, y_min) এর পরিবর্তে ব্যবহার করছেন ... ... অনুসরণ করা (x_min, y_min), (x_min, y_max), ... এটি হতে পারে আমার ভুলের কারণ? দয়া করে আপনার উদাহরণটি সংশোধন করুন :)
এক্সপ্লোরআর

উত্তর:


7

আপনার কোডে কয়েকটি পরিবর্তন করা হয়েছে:

প্রথমে নোট করুন যে আমি পয়েন্ট তৈরিতে ফেলেছি। আপনি ব্যবহার না করে একটি বহুভুজ গঠন করতে পারেন SpatialPoints। যদিও অনেক পয়েন্ট জড়িত থাকে তবে পয়েন্টগুলি থেকে বহুভুজ তৈরি করা ভাল be

দ্বিতীয়ত, আমি নীচের ম্যাট্রিক্সে পাঁচটি সমন্বয়কারী দম্পতি লিখেছি ch প্রতিটি সমন্বিত দম্পতি আপনার বাউন্ডিং বাক্সের এক কোণার জন্য দাঁড়ায়, এবং পঞ্চমটি প্রথম পয়েন্টটি পুনরাবৃত্তি করে। যথা ম্যাট্রিক্সে অন্তর্ভুক্ত রয়েছে: [ (x_min, y_min) , (x_max, y_min), (x_max, y_max), (x_max, y_min), (x_min, y_min) ]

অবশেষে, আমি ব্যবহৃত SpatialPolygonsসঙ্গে espg:4326ভৌগলিক অনুষঙ্গের মধ্যে একটি চক্রান্ত-সক্ষম বস্তুটি কি দুই রূপেই।

library(sp)

coords = matrix(c(78.46801, 19.53407,
               78.46801, 19.74557,
               78.83157, 19.74557,
               78.83157, 19.53407,
               78.46801, 19.53407), 
             ncol = 2, byrow = TRUE)


P1 = Polygon(coords)
Ps1 = SpatialPolygons(list(Polygons(list(P1), ID = "a")), proj4string=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"))
plot(Ps1, axes = TRUE)

যদি আমি আপনার কোডটি প্লট করি তবে এটিই ঘটে:

একটি বহুভুজ যা রেখার মতো দেখাচ্ছে

এবং এটি কোড উপস্থাপনের পরে এখানে উপস্থাপন করা হয়েছে:

বন্ডিং বক্স


এটাই! আপনি কি একটু মন্তব্য করতে পারেন proj4String? আপনি কি এর মধ্য দিয়ে একটি ল্যাট এবং দীর্ঘ বৈশিষ্ট্যগুলি নির্ধারণ করছেন?
ব্যবহারকারী 134611

সহায়তাটি ?is.projectedদেখতে আর-কনসোলে হিট করুন proj4string। হ্যাঁ এটি সিআরএস ক্লাসকে একটি স্থানিক বস্তুর সংজ্ঞায়িত করতে ব্যবহৃত হয়
dof1985

21

আপনি নীড় করতে extentফাংশন, রাস্টার লাইব্রেরি থেকে, এ asতৈরি করতে একটি SpatialPolygons আপত্তি।

library(sp)
e <- as(raster::extent(78.46801, 78.83157, 19.53407, 19.74557), "SpatialPolygons")
proj4string(e) <- "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
plot(e)

2
এটি আমার উত্তরের চেয়ে ভাল উপায় বলে মনে হচ্ছে।
dof1985
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.