pointdexter package labels longitudinal and latitudinal coordinates located inside a polygon.
For a singular polygon, the label for each coordinate pair is a logical vector of TRUE and FALSE values. For multiple polygons, the label for each coordinate pair is a character vector based on the names of each polygon.
Depending on your operating system and available libraries,
sfcan be tricky to install the first time. The
sfwebsite is a good place to start if you’re having trouble. If you’re using macOS, this is a good guide to installing the required libraries.
The latest stable release version can be installed from CRAN:
Development versions can be installed from GitHub:
# note: by default, the development version is the master branch; # however, that can be changed by changing the # value in the 'ref' argument remotes::install_github("cenuno/pointdexter")
pointdexter comes with built-in point and polygon data - entirely due to the awesome and accessible Chicago Data Portal - to help you label points in polygons:
Using built-in data, down below is an example of how to use
pointdexter to label coordinate pairs with their appropriate polygon:
# load necessary packages ---- library(pointdexter) # label coordinate pairs in polygons library(sp) # classes and methods for spatial data library(knitr) # general purpose package for dynamic report generation # load necessary data ---- data("cps_sy1819") data("community_areas_spdf") # create list of coordinate pair matrices for each community area ---- community.area.boundaries <- GetPolygonBoundaries(my.polygon = community_areas_spdf , labels = community_areas_spdf$community) # identify the community that each cps school lies in ---- cps_sy1819$community <- LabelPointsWithinPolygons(lng = cps_sy1819$school_longitude , lat = cps_sy1819$school_latitude , polygon.boundaries = community.area.boundaries) # store relevant columns ---- relevant.columns <- c("school_id", "short_name" , "school_longitude", "school_latitude", "community") # show first few records ---- kable(head(cps_sy1819[, relevant.columns], n = 10))
|609760||CARVER MILITARY HS||-87.59062||41.65629||RIVERDALE|
|609780||MARINE LEADERSHIP AT AMES HS||-87.72174||41.91604||LOGAN SQUARE|
|610304||PHOENIX MILITARY HS||-87.68696||41.87912||NEAR WEST SIDE|
|610513||AIR FORCE HS||-87.63276||41.82814||ARMOUR SQUARE|
|610390||RICKOVER MILITARY HS||-87.66579||41.98902||EDGEWATER|
|609754||CHICAGO MILITARY HS||-87.61922||41.83055||DOUGLAS|
|610177||SKINNER||-87.65942||41.87910||NEAR WEST SIDE|
|610534||SKINNER NORTH||-87.64484||41.90511||NEAR NORTH SIDE|
# plot only CPS high schools in the the Austin, Rogers Park, and West Elsdon community areas ---- # create filter condition ---- filter.condition <- which(cps_sy1819$is_high_school & cps_sy1819$community %in% c("AUSTIN" , "ROGERS PARK" , "WEST ELSDON")) # filter cps records to those that matched our condition --- df <- cps_sy1819[filter.condition, ] # note: clear plot space par(mar = c(0, 0, 1, 0)) plot(x = community_areas_spdf , main = "CPS High Schools in Austin, Rogers Park, and West Elsdon communities, SY1819" , cex.main = 0.75 , col = "gray85" , border = "dodgerblue4") points(x = df$school_longitude , y = df$school_latitude , pch = 19 , col = rgb(red = 212, green = 69, blue = 0 , alpha = 90 , maxColorValue = 255) , cex = 1)
|400127||YCCS - AUSTIN CAREER||TRUE||-87.76022||41.89498||AUSTIN|
|400123||YCCS - SCHOLASTIC ACHIEVEMENT||TRUE||-87.74254||41.88045||AUSTIN|
|400144||YCCS - WESTSIDE HOLISTIC||TRUE||-87.74881||41.90224||AUSTIN|
|610518||AUSTIN CCA HS||TRUE||-87.76192||41.88599||AUSTIN|
|400035||CHICAGO MATH & SCIENCE HS||TRUE||-87.67482||42.01303||ROGERS PARK|
|609733||SULLIVAN HS||TRUE||-87.66919||42.00269||ROGERS PARK|
|609694||HANCOCK HS||TRUE||-87.72447||41.79146||WEST ELSDON|
After you’ve installed the package, be sure to view the help files that introduce you to
pointdexter’s two functions:
If you use
pointdexter for any analysis, I would love to hear about it! You can also cite the package according to
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.