আর-তে শেফফাইল খুলছেন? [বন্ধ]


64

আরও জিওস্ট্যাটাস্টিকাল বিশ্লেষণের জন্য আরকেআক্যাম্যাপ থেকে আর্টফাইলটি খুলতে হবে। আমি এএসসিআইআই টেক্সট ফাইলে রূপান্তর করেছি, তবে আর এ এটি ডেটাফ্রেম হিসাবে স্বীকৃত। X এবং y অ-সংখ্যা হিসাবে স্বীকৃত হওয়ার সাথে সাথে স্থানাঙ্কের ফাংশনটি কার্যকর হয় না।

আপনি এটি মোকাবেলা করতে সাহায্য করতে পারেন?


1
কি ধরনের শেফফাইল? আমি পয়েন্ট ধরে নিচ্ছি যেহেতু এটিতে একটি এক্স এবং ওয়াই কলাম রয়েছে?
সিম্বামাঙ্গু

উত্তর:


54

সরাসরি শেফফিল ব্যবহার করুন। আপনি এটি সহজেই প্যাকেজগুলি rgdalবা sfপ্যাকেজগুলির সাহায্যে করতে পারেন এবং কোনও বস্তুতে আকারটি পড়তে পারেন। উভয় প্যাকেজগুলির জন্য আপনাকে সরবরাহ করতে হবে dsn- ডেটা উত্স, যা কোনও শেফফিলের ক্ষেত্রে ডিরেক্টরি হয় এবং layer- যা শেফফিলের নাম, বিয়োগ এক্সটেনশন:

# Read SHAPEFILE.shp from the current working directory (".")

require(rgdal)
shape <- readOGR(dsn = ".", layer = "SHAPEFILE")

require(sf)
shape <- read_sf(dsn = ".", layer = "SHAPEFILE")

(আরজিডিএল-এর জন্য, ওএসএক্স বা লিনাক্সে আপনি হোম সোর্স dsnডিরেক্টরি ডেটা ডিরেক্টরি হিসাবে 'as' শর্টহ্যান্ড ব্যবহার করতে পারবেন না ) - অন্যথায় আপনি একটি অপ্রয়োজনীয় "ডেটা উত্স খুলতে পারবেন না" বার্তা পাবেন The sfপ্যাকেজটি না অন্যান্য কিছু সুবিধার মধ্যে এই সীমাবদ্ধতা রয়েছে))

এটি আপনাকে এমন একটি বস্তু দেবে যা একটি স্পেসিয়াল * ডেটাফ্রেম (পয়েন্টস, লাইন বা বহুভুজ) - অ্যাট্রিবিউট টেবিলের ক্ষেত্রগুলি তখন আপনার কাছে সাধারণ ডেটাফ্রেমের মতোই shape$IDআইডি কলামের জন্য অ্যাক্সেসযোগ্য ।

আপনি যদি আমদানি করা ASCII ফাইলটি ব্যবহার করতে চান তবে আপনার পাঠ্য (অক্ষর) x এবং y ক্ষেত্রগুলিকে সংখ্যায় রূপান্তর করা উচিত, যেমন:

shape$x <- as.numeric(as.character(shape$x))
shape$y <- as.numeric(as.character(shape$y))
coordinates(shape) <- ~x + y

2015-01-18 সম্পাদনা করুন : নোট করুন যে rgdal মানচিত্রের তুলনায় কিছুটা ভাল (যা আমি প্রথমে এখানে পরামর্শ দিয়েছিলাম) মূলত কারণ এটি প্রজেকশন তথ্যটি স্বয়ংক্রিয়ভাবে পড়ে এবং লেখায়।

নোট:

  • নেস্টেড as.numeric(as.character())ক্রিয়াকলাপগুলি - যদি আপনার ASCII পাঠ্যটি একটি ফ্যাক্টর (সম্ভবত) হিসাবে পড়েছিলেন তবে এটি নিশ্চিত করে যে আপনি ফ্যাক্টরের স্তরগুলির পরিবর্তে সংখ্যাসূচক মান পাবেন।
  • rgdalএবং sfবিভিন্ন ফাইল এবং ডাটাবেস প্রকারের অ্যাক্সেসের বিভ্রান্তিকর পদ্ধতি রয়েছে (যেমন একটি জিপিএক্স ফাইলের জন্য, ডিএসএন হল ফাইলের নাম, এবং পৃথক উপাদান যেমন ওয়েপপয়েন্টস, ট্র্যাকপয়েন্টস, ইত্যাদি স্তরসমূহ) এবং অনলাইন উদাহরণগুলির যত্ন সহকারে পড়া প্রয়োজন।

আর সংখ্যাযুক্ত ক্ষেত্রগুলিকে পার্স করা উচিত, তাই আমি ভাবব যে এক্স এবং y তে একটি বিশেষ চরিত্রের ধরণ রয়েছে। তদতিরিক্ত, আমদানিতে, আলাদাভাবে নির্দিষ্ট না করা পর্যন্ত অক্ষর ক্ষেত্রগুলি একটি ফ্যাক্টারে জোর করা হবে। এর মতো, একটি সাধারণ "as.numeric" হ্রাস কাজ করবে না। আমি ম্যাপটোলগুলির চেয়ে "আরজিডিএল" তে "রিডওআরজি" ব্যবহার করব।
জেফ্রি ইভান্স

@ জেফ্রি, রিড ওজিআর অবশ্যই যাওয়ার আরও ভাল উপায় - পরে জি প্রশ্নগুলি নিয়ে gis.SE তে কিছু আলোচনা দেখুন। ফ্যাক্টর জবরদস্তিতে ভাল পয়েন্ট; as.characterসমস্যাটি পেতে নেস্টেড সাথে আপডেট হবে will
সিম্বামাঙ্গু

আপনি ~ ব্যবহার করতে পারে, কিন্তু আপনি ডিরেক্টরি path.expand ফোন করতে হবে চাই, যেমন readOGR (dsn = path.expand ( "~ / ডাউনলোড / cb_2016_us_zcta510_500k /"), স্তর = "cb_2016_us_zcta510_500k")
HD1

3
যাইহোক আমার এখনও এই dsn="directory where the shapefile, projection file, etc are located" layer="name of the file without .shp extention"
স্পষ্টতই

আমি নোট করতে চাই যে dsnযুক্তিতে ট্রেলিং স্ল্যাশ থাকতে হবে না --- যেমন dsn = "C:/Users/Downloads/"হওয়া উচিত dsn = "C:/Users/Downloads"। আশা করি এটি কারও হতাশার সমাধান করে ...
কিম

21

আমি সিম্বামাঙ্গুর সাথে একমত হয়েছি এবং শেফফাইলটি ধরে রাখার ক্ষেত্রে গিসল করেছি তবে আপনার দৃষ্টি আকর্ষণ করতে চাই বিশেষত আরজিডাল গ্রন্থাগারের দিকে। এনসিইএএস-এর জন্য গিসলযুক্ত প্রস্তাবিত লিঙ্কটি অনুসরণ করুন এবং আরজিডালের নির্দেশাবলী অনুসরণ করুন। কিছু মেশিনে ইনস্টল করা চ্যালেঞ্জিং হতে পারে তবে এটি অনুমানের ক্ষেত্রে ফলাফলের উন্নতি করতে পারে।

ম্যাপটোলেস লাইব্রেরিটি দুর্দান্ত এবং আপনি যে শেফফাইলটি পড়ছেন তার জন্য প্রজেকশনটি সংজ্ঞায়িত করতে দেয়, তবে এটি করার জন্য আপনাকে কীভাবে প্রজেক 4 বিন্যাসে নির্দিষ্ট করতে হবে তা জানতে হবে। উদাহরণ হতে পারে এরকম কিছু দেখতে:

project2<-"+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80    
   +datum=NAD83 +units=m +no_defs" #USA Contiguous Equidistant Conic Projection
data.shape<-readShapePoly("./MyMap.shp",IDvar="FIPS",proj4string=CRS(project2))
plot(data.shape)

আপনি যদি এই রুটটিতে যেতে চান তবে আমি আপনার প্রস্তাবটি প্রজ 4 ফর্ম্যাটে দেখতে কেমন তা নির্ধারণ করার জন্য http://spatialreferences.org কে জায়গা হিসাবে প্রস্তাব দিই। যদি এটি আপনার কোনও ঝামেলার মতো দেখায়, আরজিডাল ইএসআরআই শেফফিলের .prj ফাইলটি পড়ে (ফাইলটি যা শেফফিলের জন্য ইএসআরআইয়ের প্রক্ষেপণ সংজ্ঞা ধারণ করে pro একই ফাইলটিতে আরজিডিএল ব্যবহার করতে আপনি সহজেই লিখতে পারবেন:

library(rgdal)
data.shape<-readOGR(dsn="C:/Directory_Containing_Shapefile",layer="MyMap")
plot(data.shape)

আপনি যদি কেবল একটি একক শেফফিল নিয়ে কাজ করে থাকেন তবে আপনি সম্ভবত এটি না করেই স্কেট করতে পারেন তবে আপনি একাধিক ডেটা উত্সগুলি অনুসন্ধান করা বা গুগল ম্যাপের সাথে ওভারলেলি শুরু করার সাথে সাথে আপনার অনুমানগুলি ভাল আকারে রাখা অপরিহার্য হয়ে ওঠে।

বিন্যাসের নিদর্শনগুলি আমদানি করা এবং কাজ করার জন্য একগুচ্ছ স্টাফ সহ আর-তে স্থানীয় ডেটা সম্পর্কিত সহায়ক কিছু হাঁটাচলার জন্য আমার কাছে অনলাইনে https://csde.washington.edu/workshop/Point-patterns-and-raster এ কিছু পুরাতন পাঠ্যক্রমের সামগ্রী রয়েছে -সুরফেস / (আরও কর্মশালা এখানে পাওয়া যাবে ) যা আপনাকে এই পদ্ধতিগুলিতে অনুশীলনের তুলনায় কীভাবে তুলনা করতে সহায়তা করতে পারে।


স্থানিক রেফারেন্স তথ্যের জন্য +1 ... বিশেষত অনুমানগুলি বাছাই করা জোর দেওয়ার জন্য!
সিম্বামাঙ্গু

@ সিএসফোলার, আমি রিডওজিআরটি ব্যবহার করার চেষ্টা করেছি কিন্তু এটি .prj ফাইলটি আমদানি করছে না। কোন ধারণা কেন? আমিও ইউডাব্লু তে বায়োলজি বিভাগে।
হারমান টুথ্রোট

@ ব্যবহারকারী 4050, আপনার কোড না দেখে জানা শক্ত। আমি ধরে নিলাম একই ডিরেক্টরিতে একটি .prj ফাইল আছে? এবং আপনি যে এনকোডিং = "ইএসআরআই শেফিল" মানটি ব্যবহার করেছেন তা নিশ্চিত করতে আরজিডাল জানে যে এটি কোনও শেফফাইল?
csfowler

17

আমি মনে করি আপনার শেফফিলটিকে একটি এএসসিআইআইতে রূপান্তর করা উচিত নয় বরং পরিবর্তে স্থানিক এক্সটেনশনের একটির সাথে শেফফিলটি ব্যবহার করুন। এখানে আপনি একটি শেফফিল http://www.nceas.ucsb.edu/scicomp/usecases/ReadWritESRIShapeFiles পড়ার (এবং লেখার) জন্য তিনটি উপায় খুঁজে পেতে পারেন । আর-স্পেসিয়াল প্রকল্প সম্ভবত আপনার আগ্রহী হবে http://cran.r-project.org/web/packages/sp/index.html


17

শেপফিলগুলি সরাসরি sfখোলার জন্য আপনি লাইব্রেরি ব্যবহার করতে পারেন । এটি লাইব্রেরির চেয়ে দ্রুত , এখানে চেক করুন: আর এর জন্য সাধারণ বৈশিষ্ট্য - বেঞ্চমার্ক । প্যাকেজ সম্পর্কে আরও তথ্যের জন্য প্রকল্পের হোমপেজটি আর-স্থানিক পরীক্ষা করুন ।Rrgdalsf

# Load library
library('sf')

# Load shapefile
shapename <- read_sf('~/path/to/file.shp')

11

2017 সালে একটি সহজ সমাধান লাইব্রেরির shapefile()ফাংশন raster

#Load library
library(raster)

#Load shapefile
shp <- shapefile("myshapefile")

আপডেট: 2019 এ এটি এখনও একটি ভাল বিকল্প।


এটি কোনও অনলাইন উত্স থেকে আমদানি করতে ব্যবহার করা যেতে পারে? আমি
আমি দেল তোরো

@ আইডেল টোরো সরাসরি নয় আপনাকে প্রথমে এটি আপনার হার্ড ড্রাইভে ডাউনলোড করতে হবে এবং তারপরে সেখান থেকে এটি লোড করতে হবে।
ক্রিস্টোফার

6

আরও একটি বিকল্প হ'ল ফাস্টশপ লাইব্রেরি ব্যবহার করা যা অফার করে:

বৃহত ESRI শেফফায়ালগুলি (.shp) হ্যান্ডলিংয়ের রুটিনগুলি। এর মধ্যে রয়েছে পড়া, পয়েন্ট পাতলা হওয়া এবং আকৃতিযুক্ত পয়েন্টের মিল। এই প্যাকেজটির মূল লক্ষ্য হ'ল বড় আকারের শেফফিল (লক্ষ লক্ষ পয়েন্ট) সমর্থন করার জন্য গতি সরবরাহ করা। এটি অন্য কিছু শেফফিল প্যাকেজগুলির চেয়ে দ্রুত ম্যাগিনেটের বেশ কয়েকটি অর্ডার।

এটি ggplot2 এর সাথে কীভাবে ব্যবহার করবেন সে সম্পর্কে আমার এসই তে প্রশ্ন:

আমি কীভাবে জিজিপ্লাট 2 এ ফাস্টশপের মাধ্যমে লোড হওয়া শেফফিল প্লট করতে পারি?


1
আমি এটি কিছুটা বিরক্তিকর বলে মনে করি যে read.shp ফাংশনটির ফলে কোনও এসপি অবজেক্ট হয় না। স্থানিক আর সম্প্রদায় স্থানিক বস্তু পরিচালনার জন্য ডি-ফ্যাক্টো স্ট্যান্ডার্ড হিসাবে রূপান্তরিত হওয়ায় এটিকে আমি কিছুটা নিবিড় মনে করি। পর্যাপ্ত র‌্যাম এবং একটি 64 বিবিটি ওএস দেওয়া, বড় ডেটা পড়া কোনও সমস্যা নয়। 8 জিবি র‌্যামের সাথে আমি 30 ই পয়েন্ট এবং 2.5 ম বহুভুজগুলি পড়েছি কোনও সমস্যা ছাড়াই আরজিডাল ব্যবহার করে। : এখানে ggplot2 সঙ্গে SP বস্তু ব্যবহার করে কিছু দিক হল github.com/hadley/ggplot2/wiki/plotting-polygon-shapefiles
জেফ্রি ইভান্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.