Points in polygon

33 views
Skip to first unread message

Alexander Fruman

unread,
Nov 16, 2017, 3:56:04 AM11/16/17
to Israel R User Group
שלום רב,

אני די חדש ב-R אבל יש לי כבר טיפה ניסיון שלא מספיק לי להתמודדות עם הבעיה.
יש לי שתי קבצים:
  • CSV של פוליגון (טרמינל 3 נתב"ג) — ראה קובץ מצורף
  • CSV עם נקודות לוקיישן — גם מצורף
המטרה לצור טבלה שכוללת את כל הנקודות עם אורך ורוחב שכבר יש לי ולהוסיף משתנה בינארי שאומר האם הנקודה בתוך הפוליגון או לא.

עד עכשיו אני רק יודע לצייר אותם על המפה עם הסקריפט:
#Polygon and points plotting on the map
library(ggplot2)
library(ggmap)
library(maptools)
polygon.natbag.csv <-  read.csv("natbag2.csv",stringsAsFactors = FALSE)
points.natbag.csv  <-  read.csv("Points.csv",stringsAsFactors = FALSE)
map.natbag <- get_map(location = c(lon = mean(polygon.natbag.csv$Longitude), lat = mean(polygon.natbag.csv$Latitude)), zoom = 16, scale = 2, maptype='hybrid')
ggmap(map.natbag)+
  geom_polygon(data=polygon.natbag.csv,aes(x=Longitude,y=Latitude),alpha=0.2,colour="green",fill="green")+
  geom_path(data=polygon.natbag.csv,aes(x=Longitude,y=Latitude),colour="green",alpha=0.7,size=0.5)+
  geom_point(data = points.natbag.csv, aes(x = longitude, y = latitude), size = 1, shape = 21, fill = "red", alpha = 1)+
  guides(fill=FALSE, alpha=FALSE, size=FALSE)
חיפשתי באינטרנט ופורומים שונים ועדיין לא הצלחתי להשלים את המשימה.

אשמח מאוד עם תעזרו לי למצוא את הדרך אל הפתרון.

אלכס 
Natbag2.csv
Points.csv

Alexander Fruman

unread,
Nov 16, 2017, 3:58:30 AM11/16/17
to Israel R User Group

Michael Dorman

unread,
Nov 16, 2017, 4:22:57 AM11/16/17
to israel-r-...@googlegroups.com
ניתן להפוך את הנקודות והפוליגון לאובייקטים מרחביים ואז לבדוק יחס intersection ביניהם.  

להלן קוד -

התוצאה היא וקטור לוגי (בשם inside) באורך כמספר הנקודות, אשר מצביע לגבי כל נקודה האם היא בתוך הפוליגון.
Inline image 2

--
You received this message because you are subscribed to the Google Groups "Israel R User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to israel-r-user-group+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Ariel Telpaz

unread,
Nov 16, 2017, 4:25:37 AM11/16/17
to israel-r-...@googlegroups.com
תוריד את החבילה sp ותריץ את הקוד הבאץ הוא יוסיף לך עמוד של pointsIn וגם יצבע לך את הנקודות על המפה בהתאם. 
#Polygon and points plotting on the map
require(ggplot2)
require(ggmap)
require(maptools)
require(sp)

# import data------------------------
  polygon.natbag.csv <-  read.csv("natbag2.csv",stringsAsFactors = FALSE)
  points.natbag.csv    <-  read.csv("Points.csv",   stringsAsFactors = FALSE)
# ---------------------------------------
  
# check if points in polygon-----
  points.natbag.csv$pointsIn<-point.in.polygon(points.natbag.csv$longitude,points.natbag.csv$latitude,
                                                polygon.natbag.csv$Longitude,polygon.natbag.csv$Latitude)
# ---------------------------------------
  
# plot map----------------------------
  ggmap(get_map(location = c(lon = mean(polygon.natbag.csv$Longitude), lat = mean(polygon.natbag.csv$Latitude)), zoom = 16, scale = 2, maptype='hybrid'))+
              geom_polygon(data=polygon.natbag.csv,aes(x=Longitude,y=Latitude),alpha=0.2,colour="green",fill="green")+
              geom_path(data=polygon.natbag.csv,aes(x=Longitude,y=Latitude),colour="green",alpha=0.7,size=0.5)+
              geom_point(data = points.natbag.csv, aes(x = longitude, y = latitude,fill=pointsIn), size = 1, shape = 21, alpha = 1)+
              guides(fill=FALSE, alpha=FALSE, size=FALSE)
# ---------------------------------------

--

Alexander Fruman

unread,
Nov 16, 2017, 5:00:38 AM11/16/17
to Israel R User Group
תודה רבה על תשובתך המהירה!

בשתי שורות אחרונות אני מקבל טעות:
Error in .subset2(x, i, exact = exact) : 
  attempt to select less than one element in get1index

Alexander Fruman

unread,
Nov 16, 2017, 5:01:56 AM11/16/17
to Israel R User Group
תודה רבה, נראה מעולה!
אתה יכול להמליץ לי אולי איפה ניתן ללמוד דברים כאלה? קורס אונליין?

Michael Dorman

unread,
Nov 16, 2017, 6:23:41 AM11/16/17
to israel-r-...@googlegroups.com
אצלי זה עובד על אותם קבצים ששלחת...

תוכל בבקשה לבדוק מהו האובייקט inside שמתקבל אצלך?

To unsubscribe from this group and stop receiving emails from it, send an email to israel-r-user-group+unsubscribe...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages