4 votos

Mapnik filtro de estilo río/lagos Shapefile atributos (de datos Natural de la tierra)

Como seguimiento a esta pregunta, he descargado el vector de datos aquí:

y he creado correctamente el rasterizado agua/tierra máscara que yo quería:

land-water-level-2.png

Sin embargo, hay también muchos ríos en este nivel.

Pregunta

Puedo ¿cómo puedo hacer uso de la información de la escala en la 10m_rivers_lake_centerlines_scale_ranks.archivo dbf?

Detalles

(Parte de este conjunto de datos)

Nota: no puedo abrir el .dbf archivo en un editor de texto y ver las cargas de interesante y esperemos datos útiles:

...
River              0.300000012
River              Pivd. Buh     8       670670
River              0.349999994
River              Pivd. Buh     8       670670
River              0.200000003
Lake Centerline    Klarlven      8       677677
Lake Centerline    0.250000000
Lake Centerline    Klarlven      
...

(este es un azar pedazo de formato binario mediante la eliminación de espacios y la adición de nuevas líneas)

El uso de Nik2Img.py puedo ejecutar el siguiente código XML y obtener la saturación-con-los ríos-resultados:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map>
<Map bgcolor="black" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over">

  <Style name="landstyle">
    <Rule>
      <LineSymbolizer>
        <CssParameter name="stroke">white</CssParameter>
        <CssParameter name="stroke-width">0.0</CssParameter>
      </LineSymbolizer>

      <PolygonSymbolizer>
        <CssParameter name="fill">white</CssParameter>
        <CssParameter name="gamma">0.65</CssParameter>
      </PolygonSymbolizer>
    </Rule>
  </Style>

  <Style name="waterstyle">
    <Rule>
      <LineSymbolizer>
        <CssParameter name="stroke">black</CssParameter>
        <CssParameter name="stroke-width">0.0</CssParameter>
      </LineSymbolizer>

      <PolygonSymbolizer>
        <CssParameter name="fill">black</CssParameter>
        <CssParameter name="gamma">0.8</CssParameter>
      </PolygonSymbolizer>
    </Rule>
  </Style>

  <Style name="riverstyle">
    <Rule>    
      <LineSymbolizer>
        <CssParameter name="stroke">black</CssParameter>
        <CssParameter name="stroke-width">0.15</CssParameter>
      </LineSymbolizer>

      <PolygonSymbolizer>
        <CssParameter name="fill-opacity">0</CssParameter>
        <CssParameter name="fill">black</CssParameter>
      </PolygonSymbolizer>
    </Rule>
  </Style>

  <Layer name="world" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
    <StyleName>landstyle</StyleName>
    <Datasource>
      <Parameter name="type">shape</Parameter>
      <Parameter name="file">../10m/10m_land</Parameter>
    </Datasource>
  </Layer>

  <Layer name="world" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
    <StyleName>landstyle</StyleName>
    <Datasource>
      <Parameter name="type">shape</Parameter>
      <Parameter name="file">../10m/10m_minor_islands</Parameter>
    </Datasource>
  </Layer>


<!--
  <Layer name="world" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
    <StyleName>waterstyle</StyleName>
    <Datasource>
      <Parameter name="type">shape</Parameter>
      <Parameter name="file">../10m/10m_lakes</Parameter>
    </Datasource>
  </Layer>
-->

  <Layer name="world" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
    <StyleName>riverstyle</StyleName>
    <Datasource>
      <Parameter name="type">shape</Parameter>
      <Parameter name="file">../10m/10m_rivers_lake_centerlines_scale_ranks</Parameter>
    </Datasource>
  </Layer>

</Map>

Cambiar la riverstyle sección a la siguiente elimina todos los ríos/el lago de las líneas centrales en lugar de filtrar cualquier cosa por tipo (River vs Lago de la línea central) o escala/rango/espesor:

  <Style name="riverstyle">
    <Rule>
      <Filter>[River] &gt;= 0</Filter>

      <LineSymbolizer>
        <CssParameter name="stroke">black</CssParameter>
        <CssParameter name="stroke-width">0.15</CssParameter>
      </LineSymbolizer>

      <PolygonSymbolizer>
        <CssParameter name="fill-opacity">0</CssParameter>
        <CssParameter name="fill">black</CssParameter>
      </PolygonSymbolizer>
    </Rule>
  </Style>

¿Cómo debo/puedo hacer algún filtro(s) para esto?

      <Filter>[River] &gt;= 0</Filter>
      <Filter>[River] &gt; 0</Filter>

Soy nuevo en Mapnik y Naturales de la Tierra Shapefiles. Soy un programador experimentado, así que estoy dispuesto a escribir el código (Python, C#, etc.) si me necesitan, pero me gustaría utilizar las herramientas disponibles, si es posible.

5voto

Shog9 Puntos 82052

El atributo 'Río' no existe en esa shapefile como lo que puedo decir. Tu post ha ayudado a recordarme que Mapnik se debe tirar un error en este caso, así es más fácil de atrapar común error como este (http://trac.mapnik.org/ticket/604).

Un truco para obtener los nombres de atributo es abrir el archivo de forma en QuantumGIS (e incluso utilizar el Quantumnik Plugin si quieres un fragmento xml generado para Mapnik) o usar ogr2ogr para consultar el archivo de forma como:

$ ogrinfo 10m_rivers_lake_centerlines_scale_ranks.shp -así que -al
INFO: Abierto de `10m_rivers_lake_centerlines_scale_ranks.shp'
 utilizando un controlador `ESRI Shapefile con éxito.

Nombre de capa: 10m_rivers_lake_centerlines_scale_ranks
Geometría: Línea De Cadena
Función De Conteo: 4078
Medida: (-164.903495, -52.157769) - (177.211192, 75.793463)
La capa de SRS WKT:
GEOGCS["GCS_WGS_1984",
DATUM["WGS_1984",
ESFEROIDE["WGS_1984",6378137.0,298.257223563]],
PRIMEM["Greenwich",0.0],
De la UNIDAD["Grado",0.0174532925199433]]
StrokeWeig: Real (19.9)
FeatureCla: String (32.0)
Name1: String (254.0)
Nombre2: String (254.0)
ScaleRank: Integer (10.0)
RiverNum: Integer (10.0)
Disolver: String (100.0)
Nota: String (50.0)

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