2012-08-28 16 views
12

मैं बाद में स्थानिक विश्लेषण के लिए इसका उपयोग करने के लिए, वोरोनोई बहुभुज को मानचित्र के साथ जोड़ना चाहता हूं। मेरे पास अंक और आकारफाइल की संख्या है जो मैं गठबंधन करना चाहता हूं और फिर आकारफाइल/स्थानिक बहुभुज के रूप में सहेजना चाहता हूं। Voronoi बहुभुज प्राप्त करने के लिए मैं this topic से फ़ंक्शन का उपयोग करता हूं।वोरोनोई बहुभुज और मानचित्रों को मिलाएं

coords<-data.frame(LONG=c(16.9252,16.9363,16.9408,16.8720,16.9167,16.9461,16.9093,16.9457,16.9171,16.8506,16.9471,16.8723,16.9444,16.9212,16.8809,16.9191,16.8968,16.8719,16.9669,16.8845), 
LAT=c(52.4064,52.4266,52.3836,52.3959,52.4496,52.3924,52.4012,52.3924,52.3777,52.4368,52.4574,52.3945,52.4572,52.3962,52.3816,52.3809,52.3956,52.3761,52.4236,52.4539)) 

मेरे नक्शा यहाँ उपलब्ध है: https://docs.google.com/file/d/0B-ZJyVlQBsqlSURiN284dF9YNUk/edit

library(rgdal) 
voronoipolygons <- function(x) { 
    require(deldir) 
    if (.hasSlot(x, 'coords')) { 
    crds <- [email protected] 
    } else crds <- x 
    z <- deldir(crds[,1], crds[,2]) 
    w <- tile.list(z) 
    polys <- vector(mode='list', length=length(w)) 
    require(sp) 
    for (i in seq(along=polys)) { 
    pcrds <- cbind(w[[i]]$x, w[[i]]$y) 
    pcrds <- rbind(pcrds, pcrds[1,]) 
    polys[[i]] <- Polygons(list(Polygon(pcrds)), ID=as.character(i)) 
    } 
    SP <- SpatialPolygons(polys) 
    voronoi <- SpatialPolygonsDataFrame(SP, data=data.frame(x=crds[,1], 
                  y=crds[,2], row.names=sapply(slot(SP, 'polygons'), 
                         function(x) slot(x, 'ID')))) 
} 

और मेरे कोड voronoipolygons पाने के लिए:

pzn.coords<-voronoipolygons(coords) 
plot(pznall) 
plot(pzn.coords,add=T) 
points(coords$LONG,coords$LAT) 

परिणाम: enter image description here

मेरे कोड इस प्रकार है

मैं अपने मानचित्र के अंदर इस voronoi बहुभुज को नए spatialpolygon के रूप में रखना चाहता था।

मैं कर्मचारियों के लिए आभारी रहूंगा!

संपादित करें:

स्पष्ट रूप से, मैं कुछ इस तरह (इस लाइनों voronoi बहुभुज से बनाया जाना चाहिए) हासिल करना चाहते हैं:

enter image description here

+2

यह स्पष्ट नहीं है कि आप क्या चाहते हैं। आपके पास pzn.coords ऑब्जेक्ट में spatialpolygonsdataframe के रूप में voronoi बहुभुज है। – Spacedman

+0

आपके द्वारा प्रदान किया गया लिंक एक '.rdata' फ़ाइल है। आप 'save()' का उपयोग करके एक नई 'myvoronietc.rdata' फ़ाइल बना सकते हैं, उदा। 'सेव करें (' pzn.coords ',' lota_other_data ', file =' myvoronietc.rdata ') '। –

+0

मैं अपने मानचित्र के अंदर वोरोनोई बहुभुज रखने के लिए दोनों फाइलों को गठबंधन करना चाहता हूं, न कि वोरोनोई बहुभुजों की इस वर्ग सीमाओं को, बल्कि मेरे मानचित्र सीमाओं में। – Maciej

उत्तर

12

थोड़ा संशोधित समारोह, लेता है एक अतिरिक्त स्थानिक बहुभुज तर्क और उस बॉक्स तक फैला हुआ है:

voronoipolygons <- function(x,poly) { 
    require(deldir) 
    if (.hasSlot(x, 'coords')) { 
    crds <- [email protected] 
    } else crds <- x 
    bb = bbox(poly) 
    rw = as.numeric(t(bb)) 
    z <- deldir(crds[,1], crds[,2],rw=rw) 
    w <- tile.list(z) 
    polys <- vector(mode='list', length=length(w)) 
    require(sp) 
    for (i in seq(along=polys)) { 
    pcrds <- cbind(w[[i]]$x, w[[i]]$y) 
    pcrds <- rbind(pcrds, pcrds[1,]) 
    polys[[i]] <- Polygons(list(Polygon(pcrds)), ID=as.character(i)) 
    } 
    SP <- SpatialPolygons(polys) 

    voronoi <- SpatialPolygonsDataFrame(SP, data=data.frame(x=crds[,1], 
                  y=crds[,2], row.names=sapply(slot(SP, 'polygons'), 
                         function(x) slot(x, 'ID')))) 

    return(voronoi) 

} 

तब कार्य करें:

pzn.coords<-voronoipolygons(coords,pznall) 
library(rgeos) 
gg = gIntersection(pznall,pzn.coords,byid=TRUE) 
plot(gg) 

ध्यान दें कि gg एक SpatialPolygons आपत्ति है, और आप बेमेल proj4 तार बारे में एक चेतावनी हो सकती है। आपको proj4 स्ट्रिंग को एक या अन्य ऑब्जेक्ट्स को असाइन करने की आवश्यकता हो सकती है।

+0

आपको बहुत धन्यवाद बहुत, मैं यही चाहता था! – Maciej

+0

आपके पास लाइन 7 पर एक 'pznall' है ('poly' होना चाहिए) – jbaums

+0

मैं सहमत हूं,' rw = as.numeric (t (bbox (pznall)))' 'rw = as.numeric (t 'के साथ प्रतिस्थापित किया जाना चाहिए (बीबी)) '(' बीबॉक्स (पॉली) 'के रूप में पहले ही 'बीबी' में सहेजा गया था)। –

संबंधित मुद्दे