3 votos

Ninguna intersección encuentra entre polígonos sé que se cruzan!

Estoy usando dos áreas geográficas: se compone de las áreas pequeñas (alrededor de 2,200), los otros grandes áreas (cerca de 70). Ambos cubren todos los de Australia, y las pequeñas áreas que no necesariamente están anidadas dentro de grandes áreas. Para las áreas grandes, me fue dado un archivo kml, y un mapinfo archivo (ambos proceden de la Oficina de Estadística de Australia). Me he convertido en .formato shp, para su uso en R (utilizando rgeos).

Para cada una de las áreas pequeñas, me gustaría que la proporción de los que cabe en cada área grande. Esto se puede hacer con

gArea(gIntersection(área pequeña, área grande))/gArea(área pequeña)

Que puedo ejecutar dentro de un bucle foreach que devuelve un 2200 por 70 de la matriz de pesos.

Mi problema es que para algunas de las regiones más pequeñas, este método no encontrar la intersección (como en la devuelve cero para todas las áreas más grandes). He corrido en forma de archivos construido a partir de ambos el archivo kml y el mapinfo archivos, y las áreas con ninguna intersección son diferentes!

¿Cuál sería la causa más probable de este tipo de problema?


Editar-

Gracias chicos por su ayuda. He puesto un pequeño archivo zip contiene dos archivos shape y el R script que estoy usando. Estoy bastante fresco a este (3 días) para leer sobre las proyecciones. Gracias de nuevo. (El archivo es de unos 60 megas)

https://dl.dropbox.com/u/63100926/Example.zip


Edit 2:

Gracias a tus consejos, ahora sé que mi pequeño son las regiones en GRS80, y mi gran regiones están en WGS84. Así que gracias! Estoy teniendo un poco de dificultad en encontrar la forma de cambiar. Alguna sugerencia sobre dónde buscar? Saludos.

4voto

Actualización: después de la descarga de tus archivos de ejemplo, el principal problema parece ser errores de geometría - un pequeño subconjunto de LFS_Regions (Tassie sólo) da 105 errores en QGIS, por ejemplo. Esta es, probablemente, donde las inconsistencias con las que vienen. Prueba a reparar las geometrías en la HIERBA, tal vez! Algunas notas sobre el este de Faunalia aquí.


Necesitas poner tus archivos en la misma proyección y, si usted está preocupado acerca de los cálculos de áreas, el uso de una proyección que es apropiado; GDA94 / Geoscience Australia Lambert (EPSG:3112) podría funcionar para usted. Utilizando un ejemplo de UTM 36S:

library(rgdal) # for spatial transformation
library(maptools) # for working with shapefiles
library(rgeos) # spTransform method 

Carga de archivos de forma a partir readOGR (para conservar la información de proyección que readShape* no!), y mira los resúmenes:

f <- readOGR(dsn = getwd(), layer = "gma_east_utm36")
g <- readOGR(dsn=getwd(), layer = "gma_overlap")
summary(f)

Object of class SpatialPolygonsDataFrame
Coordinates:
        min       max
x  189715.7  544014.4
y 8448195.7 8859829.1
Is projected: TRUE 
proj4string :
[+proj=utm +zone=36 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0]
Data attributes ... 

summary(g)
Object of class SpatialPolygonsDataFrame
Coordinates:
        min       max
x  32.45725  32.82836
y -12.58917 -10.92426
Is projected: FALSE 
proj4string :
[+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0]
Data attributes ...

f se proyecta (UTM / m) y g no lo es. Proyecto g:

g.utm36 <- spTransform(hrr.shp, CRS("+init=epsg:32736"))

Ahora usted puede crear un nuevo objeto con el solapamiento:

fg <- gIntersection(f, g.utm36)

Desde su 'grandes áreas están en WGS84 (por que supongo que te refieres a no proyectados lat/lon?) puede que desee para transformar sus formas en el GDA94 proyección de los mencionados anteriormente y hacer sus cálculos de allí.

2voto

Niall C. Puntos 1234

Suena como si la proyección es el problema.
El archivo Kml es sin duda en el google requiere de proyección wgs
Mientras que el mapinfo archivo, probablemente, podría no estar en esa proyección.
Para obtener mediciones precisas usted debe re-proyecto para un "local" unificados de proyección.
tales como los medidores.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X