Daha çox

R-dən istifadə edərək çoxbucaqları həll edin / xüsusi poliqonları birləşdirin


Məndə shapefile formatında məlumatlar var :: UK_boundaries R və Məkan məlumatları ilə də tanışam, bəzi sahələri aralarında heç bir xətt (lər) olmaq üçün birləşdirməyə çalışıram. Axtarışımı əsas götürərək başa düşürəm birlikSpatialPolygons funksiya çoxbucaqlıları həll edir, lakin istifadə etməyə çalışdığımda səhv oldum: Xəta: TopologyExsus: Giriş geomu 0 etibarsızdır: 162544.73551388 516922.55880385998 nöqtəsində 162544.73551388 516922.55880385998

libs <- c ("rgdal", "maptools", "gridExtra", "rgeos", "raster") lapply (libs, Required, character.only = TRUE) LA <- readOGR (dsn = ".", layer = "infuse_dist_lyr_2011_clipped") ID-lər <- LA $ geo_code şəxsiyyətləri [ID-lər%% in% ("95DD", "95II", "95QQ", "95EE", "95RR", "95UU", "95TT", "95CC", "95BB")] <- c ("95AA", "95GG", "95HH", "95JJ", "95JJ", "95JJ", "95KK", "95OO", "95XX") LA_new <- unionSpatialPolygons ( LA, şəxsiyyət vəsiqələri)

Xülasə olaraq burada göstərilən eyni rəngli sahələrin birləşdirilməsini istəyirəm.

Zəhmət olmasa kömək edin?


Səhvinizi təkrarlaya bilərəm. Cari bir həll yolu istifadə etməkdir gpclib (qeyri-kommersiya istifadəsi üçün pulsuz) əvəzinə rgeos:

# install.packages ("gpclib") library ("gpclib") gpclibPermit () # [1] DOĞRU # Xəbərdarlıq mesajı: # GpclibPermit () -də: # gpclib dəstəyi növbəti böyük buraxılışda maptools-dan geri alınacaq LA_new <- unionSpatialPolygons (LA, şəxsiyyət vəsiqələri, qarşısını almaqGEOS = DOĞRU)

Deyəsən bir il gecikmişəm, amma cavabı yenə də göndərmək istəyirəm, bəlkə sonradan başqalarına kömək edə bilər.

Xəta mesajı özünü izah edir - şəklinizdəki topoloji xətası (Öz-kəsişmə) var. İstifadə edə bilərsəngIsValid ()funksiyasırgeosxətanı çoxaltmaq və şəklindəki digər topoloji səhvini aşkar etmək.

Düzeltməyə gəldikdə, QGIS və ya ArcMap istifadə edərək shapefile düzəliş edərək topoloji səhvinin aradan qaldırılmasını təklif edərdim.


TopologyException səhvlərini qarşısını almaq və ya düzəltmək üçün maraqlı bir yol @hrbrmstr tərəfindən burada təklif edilmişdir: sıfır enli bufer. Buna görə tətbiq etməzdən əvvəl bunu sınayınbirlikSpatialPolygons. Verilən @İman nümunəsində bəlkə də belə bir şey: (Mən bunu sınamadım)

LA_2 <- gBuffer (LA, byid = TRUE, width = 0) LA_new <- unionSpatialPolygons (LA_2, ID)


Videoya baxın: DÜNYADA YIĞILAN KAGIZ TULLANTILARI TƏKRAR EMAL OLUNARSA 250 MLN AĞAC QORUNAR. (Oktyabr 2021).