Estamos utilizando osm2pgsql para importar el archivo planet.osm de OpenStreetMap a GeoServer. Luego tratamos de obtener características de la capa de polígonos utilizando el controlador WFS de GDAL/OGR en C#.
Hemos probado la importación con y sin el --multi-geometry
opción.
El multipolígono que estoy utilizando para las pruebas es http://www.openstreetmap.org/relation/69663 . Intento buscar las características relevantes con
layer.SetAttributeFilter("(osm_id=69663)OR(osm_id=28414267)OR(osm_id=30407439)");
Los ID de arriba son el ID de la relación del polígono múltiple, el ID del camino exterior y el ID del camino interior, respectivamente. Esta consulta devuelve una única característica con una única geometría con 22 nodos y sin geometrías anidadas. Este elemento coincide con el camino exterior en cuanto a ID, número de nodos y sus etiquetas. Esto significa que no sólo falta la vía interior, sino que también faltan las etiquetas de las relaciones, que es lo que la identifica como edificio.
¿Qué pasó con el camino interior? ¿Se descartó porque no tiene ninguna etiqueta? ¿Qué pasó con la relación? Y lo más importante, ¿cómo obtengo el resultado que busco?
EDIT: iant quería saber qué había en la columna de geometría. La columna de geometría se llama "camino" y para el osm_id 28414267 contiene:
0103000020E61000000100000016000000F988F3CBBB012A40ECEB0AC73DCD4B40B24CBF44BC012A400F046D173FCD4B40015B142CC4012A40399787F13FCD4B40F8CDB348C9012A4050357A3540CD4B407F750B13FC012A400E6EC6C441CD4B405BE4E83B09022A40263ACB2C42CD4B40DB3E9AA03C022A4060F01FC143CD4B406DECC84741022A4001E8E6D143CD4B403BAC70CB47022A409C22765C43CD4B40F107A8154B022A408A5B60EA42CD4B40B46DBD4B4E022A405BF1683E42CD4B4048BD4CB967022A404015376E31CD4B40A5CD829A6B022A409BDC39DE2ECD4B40D0807A336A022A401E79D6242ECD4B409EFB613A63022A4095DD825B2DCD4B406BC1E677F5012A40FA3D569522CD4B4063EFC517ED012A40FA3D569522CD4B40E92D7997E6012A407D1C72D822CD4B4057804AF0E1012A40F9C1548E24CD4B40DD8431D8C3012A40BF93BB7438CD4B40A977A7F1C1012A406B3304B639CD4B40F988F3CBBB012A40ECEB0AC73DCD4B40
Lo convertimos a texto y contiene exactamente lo que obtuve con OGR: 22 nodos, sin geometrías anidadas.
EDIT 2: Los datos hexadecimales anteriores como texto:
POLYGON((13.0033859 55.6034478,13.0033895 55.6034879,13.0034498 55.6035139,13.0034888 55.603522,13.0038763 55.6035696,13.0039767 55.603582,13.0043688 55.6036302,13.0044043 55.6036322,13.004454 55.6036182,13.0044791 55.6036046,13.0045036 55.6035841,13.0046976 55.603071,13.0047272 55.6029928,13.0047165 55.6029707,13.0046633 55.6029467,13.0038259 55.6026179,13.003762 55.6026179,13.0037124 55.6026259,13.0036769 55.6026781,13.0034473 55.6032854,13.0034328 55.6033237,13.0033859 55.6034478))
Me da pereza comprobarlos todos, pero el undécimo nodo ( 13.0045036 55.6035841
) coincide con el primer nodo de OpenStreetMap.