আর ব্যবহার করে একটি স্থানিক বহুভুজ অবজেক্টটিকে ডেটা ফ্রেমে রূপান্তর করুন


18

আমার লক্ষ্য হ'ল নির্দিষ্ট বহুভুজকে মার্জ করে একটি বিদ্যমান শেফফিলটি সংশোধন করা।

শেফফাইলটি আমদানি করার পরে এবং ইউনিয়নস্পটিয়ালপলিগনস কমান্ডটি ব্যবহার করার পরে, আমি যে বহুভুজটি চাই তার বাহ্যরেখা পাই।

যাইহোক, এটি এখন একটি স্পেশিয়ালপলিগনস অবজেক্ট এবং স্পটালপলিজোনস ডেটা ফ্রেম নয়, তাই আমি রাইটওজিআর ব্যবহার করে এটি কোনও শেফফাইলে রফতানি করতে অক্ষম।

আমি কীভাবে এই সমস্যাটি পেতে পারি?


3
যদি নীচের উত্তরটি কার্যকর হয় তবে আপনার উত্তর পাঠ্যের বাম দিকে টিক চিহ্নটিতে ক্লিক করে এটি সঠিক হিসাবে নির্বাচন করা উচিত।
স্লোলিয়ারার

উত্তর:


20

নামটি যেমন বলেছে, একটি স্প্যাটিয়ালপলিজোনস ডেটাফ্রেম মূলত কেবল একটি স্প্যাটিয়ালপলিকন অবজেক্ট যার সাথে ডেটা সংযুক্ত থাকে (বৈশিষ্ট্য সারণী)। বৈশিষ্ট্যগুলি থাকাতে ডেটাতে কমপক্ষে সারি থাকতে হবে

library(rgdal)
ob <- SpatialPolygons(..)# Your SpatialPolygons Object
spp <-     SpatialPolygonsDataFrame(ob,data=as.data.frame("yourData"),proj4string=CRS("+proj=    aea > +ellps=GRS80 +datum=WGS84"))
writeOGR(spp,"shapes","testShape",driver="ESRI Shapefile",)

---- সম্পাদনা ----

আপনি যদি আপনার SpatialPolygonsDataFrameপিছনে কোনও SpatialPolygonsবস্তুতে রূপান্তর করতে চান তবে আপনাকে আর এর মধ্যে অবজেক্টের কাঠামোটি সম্বোধন করতে হবে

ob <- SpatialPolygons(spp@polygons,proj4string=spp@proj4string)

নিশ্চিতভাবেই, @ কর্কুলি ঠিক বলেছেন। IDsকার্যকর করার সময় যুক্তিটি সঠিকভাবে নির্দিষ্ট করে দেওয়ার বিষয়টি নিশ্চিত করুন UnionSpatialPolygons। অন্যথায় আপনি dataফিরে রূপান্তর করার সময় যুক্তি উল্লেখ করতে সমস্যা হতে পারে SpatialPolygonsDataFrame
fdetsch

1
অবশ্যই, বেশ সহজ। আমি এর মূল উত্তরটি সম্পাদনা করেছি
কার্লিউ

1
আমি সম্প্রতি শেফফায়ালসের সাথে কাজ শুরু করেছি এবং এখনও এটির সাথে নিজেকে পরিচিত করার চেষ্টা করছি। আপনার ডেটা জন্য সঠিক কি প্রতিস্থাপন করা উচিত data=as.data.frame("yourData")? অভ্যন্তরীণ বহুভুজ ব্যবহার করে দ্রবীভূত করার পরে unionSpatialPolygons(...), আমি ফলাফলটি নতুন
শেফফিল

আপনার স্প্যাটিয়ালপলিজোনস অবজেক্টে যেমন বৈশিষ্ট্য রয়েছে তেমনি একই সংখ্যক সারি সহ আপনার একটি ডেটা ফ্রেম থাকা দরকার। আপনার unionইস্যু সংক্রান্ত একটি নতুন প্রশ্ন জিজ্ঞাসা করা আরও ভাল ..
কার্লিউ

1
@ কর্কলিউ আপনাকে ধন্যবাদ, সবেমাত্র এখানে নতুন প্রশ্ন পোস্ট করেছেন gis.stackexchange.com/q/121405/40108
লাইটনফিরি

9

সমস্যা:

1: ইউনিয়নস্পটিয়ালপলিগনসের ফলাফল একটি স্থানিক বহুভুজ

2: ফলাফলকে একটি স্থানিক বহুভুজ ডেটা ফ্রেমে রূপান্তর করা একটি আসল ব্যথা

-a। একটি স্থানিক বহুভুজের সাথে সংযুক্ত করার জন্য আপনার খুব সঠিক ডেটা ফ্রেম দরকার

-b। আপনি ইউনিয়নস্পটিয়ালপলিগনসের জন্য যে ডেটা ব্যবহার করেছেন তাতে আউটপুটের চেয়ে বেশি সারি রয়েছে এবং এটি প্রয়োজনীয়ভাবে ফর্ম্যাট হয় না।

আমার (কুরুচিপূর্ণ) সমাধান:

### Coerce into spatial polygon data frame with id and row name of spatial polygon

# Make a data frame that meets the requirements above:

df<- data.frame(id = getSpPPolygonsIDSlots(your.spatialpolygon))
row.names(df) <- getSpPPolygonsIDSlots(your.spatialpolygon)

# Make spatial polygon data frame
spdf <- SpatialPolygonsDataFrame(your.spatialpolygon, data =df)

# Then don't forget to make sure the projection is correct
# XXXX is your SRID

proj4string(spdf) <- CRS("+init=epsg:XXXX");
spdf <- spTransform(spdf , CRS("+init=epsg:XXXX"));

ত্রুটি (দৈর্ঘ্য (এসআর @ বহুভুজ)! = নরো (ডেটা)) বন্ধ করুন (পেস্ট ("বস্তুর দৈর্ঘ্যের মিল নেই: \ n",: যুক্তি দৈর্ঘ্যের শূন্যের সাথে যুক্ত: সতর্কতা বার্তা: 1: ব্যবহার * প্রয়োগ এবং সরাসরি স্লট
মোক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.