2016-08-03 2 views
1

J'essaie de faire une carte du territoire de vente définie par mon client pour montrer les ventes annuelles réalisées dans chacun des territoires.Fusion des limites ZCTA pour obtenir un territoire défini par l'utilisateur basé sur les codes postaux dans R

J'ai téléchargé le fichier ZCTA de notre recensement cb_2015_us_zcta510_500k.zip. J'ai utilisé le code suivant pour obtenir la carte du territoire:

en`#reading shapefile 
oregon <- readOGR(dsn = ".", layer = "cb_2013_us_zcta510_500k") 

#alignment data from hive, this is the file that have zip codes corresponding to all the territories 
Territory_Zip_dataunique_zip <- dataTier1 
Territory_Zip_dataunique_zip$l_alignment.zipcode <- clean.zipcodes(Territory_Zip_dataunique_zip$l_alignment.zipcode) 



terrData <- Territory_zip_data_unique_zip 

#Get all the zip codes from my territory file 
terrData1 <- data.frame(Territory_zip_data_master[,1]) 
names(terrData1) <- c("GEOID10") 

#Subset ZCTA file to have only zips that are in my territory file 
oregonSubset <- merge(oregon,terrData1, all.y = F, all.x = F) 

#merge with territory file to get corresponsding territory ids 
natnds <- merge(oregonSubset, terrData, by.x = "GEOID10", by.y = "l_alignment.zipcode", all.y = F, all.x = F) 

#make territory ids as revised ids for polygondataframe 
revised_id <- natnds$l_alignment.territoryid 

#Redefine shapefile based on revised ids 
unionPoly <- unionSpatialPolygons(oregonSubset,revised_id) 

#Fortify the spacialpolygondataframe 
unionPoly_fort <- fortify(unionPoly) 

#Plot 
p <- ggplot() + 
    geom_polygon(data = ds, aes(x = long, y = lat, group = group, 
            fill = id), color = "black", size = 0.25) + 
            theme(legend.position="none", 
             plot.background = element_rect(fill = "transparent",colour = NA), 
             panel.background =element_rect(fill = "transparent",colour = NA), # or theme_blank() 
             panel.grid.minor =element_blank(), 
             panel.grid.major =element_blank(), 
             axis.ticks = element_blank(), 
             axis.text = element_blank(), 
             axis.title = element_blank()) 

Je reçois la sortie suivante

outcome of the plot

Maintenant, le problème est les lacunes (espace blanc entre les deux) sur le côté gauche de le tableau. Comment puis-je obtenir des limites de territoire continues remplies de couleur sans ces lacunes? En d'autres termes, puis-je en quelque sorte faire comme la bonne partie du tableau?

Je comprends que c'est un problème de données, et pour ces lacunes, il n'y a pas de code postal défini, je peux le voir en traçant le fichier de forme d'origine.

Est-ce que quelqu'un a essayé de combler ces lacunes?

Répondre

0

D'abord, le correctif. Les frontières d'avant 2010, qui ne présentent pas de lacunes, sont disponibles au https://www.census.gov/geo/maps-data/data/prev_cartbndry_names.html.

Maintenant, je vais vous dire ce que les lacunes signifient. La question, au moins en partie, est que certaines terres américaines ne sont pas déclarées ZCTA. Selon la page du recensement, «Pour le Recensement de 2010, les grandes étendues d'eau et les grandes zones terrestres non peuplées n'ont pas d'ZCTA» (je ne peux pas les lier, mais vous pourrez les trouver sur Google). Ceci est particulièrement mauvais dans les zones à faible population, mais il y a même des zones manquantes près des grandes villes. Voir, par exemple, cette exploration dans la région de Chicago: https://walkerke.shinyapps.io/tigris-zip-income/

Les zones manquantes sont clairement des choses comme la nature conserve (comme Midewin National Tallgrass Prarie et ce que Google suggère est la réserve naturelle de Braidwood juste à son Sud), qui ne devrait par définition pas avoir une habitation humaine à long terme.