¿Cómo implementar el mapa de valor por alfa en GIS?

14

Recientemente he estado leyendo un poco acerca de los cartogramas y encontré una alternativa interesante: value-by-alpha maps .

El concepto se describe con más detalles aquí y el documento completo está disponible [no abiertamente ] [aquí] 2 .

Hay algunos detalles sobre la implementación en indiemaps blog :

  

... todos los gráficos anteriores se produjeron con ActionScript 3, usando solo un editor de texto y el último SDK de Flex gratuito ...

¿Cómo podría implementar algo así en el paquete GIS (ArcGIS? QuantumGIS?)? O R y ggplot2? ¿O Python?

    
pregunta radek 21.10.2010 - 12:20

7 respuestas

7

Aquí hay un método para hacer Alpha By Value en QGIS

enlace

Puede usar las nuevas funciones ramp_color y scale_linear y los símbolos definidos por datos

regexp_replace( ramp_color('usa', scale_linear( "unemployed_by_county_xgv_Rate",0,15,0,1)),',[^,]*$',','|| toint(scale_linear("unemployed_by_county_xgv_Labor_Force",0,100000,0,255)))

    
respondido por el Nathan W 28.06.2013 - 00:52
5

En R, puedes leer los polígonos y trazarlos en un dispositivo que admita transparencia. Aquí estoy usando el dispositivo windows (), R 2.12.0 con los paquetes rgdal y sp.

## read some example polygons
library(rgdal)
dsn <- system.file("vectors/ps_cant_31.MIF", package = "rgdal")[1]
ps_cant_31 <- readOGR(dsn=dsn, layer="ps_cant_31")

## scale population values 

ps_cant_31$sclpop <- sqrt((ps_cant_31$POP - min(ps_cant_31$POP))/ diff(range(ps_cant_31$POP)))

## randomly assign 0 or 1
ps_cant_31$rand <- sample(0:1, length(ps_cant_31$POP), replace = TRUE)

## plot red or blue, scaled by population
plot(ps_cant_31,  col = ifelse(ps_cant_31$rand == 0, rgb(0, 0, 1, ps_cant_31$sclpop), rgb(1, 0, 0, ps_cant_31$sclpop)))

    
respondido por el mdsumner 23.11.2010 - 23:59
4

Le sugiero que visite el sitio de Geo Vista y su software. El Visual Inquiry Toolkit , proporciona un programa GUI para implementar los mapas de cloropletas bi-variables (lo sé El cartel aquí trabaja en ese proyecto y puede apuntar a otros recursos).

Creo que la publicación en el blog de cartogrammer es suficiente para explicar la técnica, pero aquí hay un artículo bastante bueno (abierto al público) para ver su uso en la práctica.

Análisis geovisuales para mejorar la interpretación estadística de exploración espacial: un análisis de la mortalidad por cáncer de cuello uterino en los Estados Unidos Jin Chen, Robert E Roth, Adam T. Naito, Eugene J. Lengerich y Alan M. MacEachren Revista Internacional de Geografía de la Salud 2008, 7:57

¡Espero ver algunos ejemplos de código para Python y R también! Básicamente, cualquier programa que pueda implementar un esquema de color de dos escalas (o bivariable) puede crear un valor por mapa alfa. Aunque todas las implementaciones que he visto hasta ahora son para mapas de coropletas, no hay ninguna razón por la que no pueda implementar esto también para un mapa basado en puntos o ráster.

Recientemente escribí una publicación de blog sobre cómo implementarlos en ArcGIS, Crear valor mediante mapas alfa con ArcMap . Básicamente, implica crear capas separadas para una transparencia dada y luego utilizar las herramientas de edición de vectores disponibles en ArcMap para producir la leyenda bivariada necesaria (o usar un mapa de inserción falso para replicar la leyenda si desea producir un mapa VBA de fondo negro).

    
respondido por el Andy W 21.10.2010 - 14:57
3

Podría hacer esto si uDig utiliza un estilo basado en SLD que calcula el% de opacidad utilizando las funciones matemáticas en la especificación de filtro OGC. No estoy seguro de qué tan eficiente sería, pero ciertamente podría usarse como prueba de concepto.

He creado una demostración en enlace con una discusión en enlace . Resulta que es bastante fácil.

          <PolygonSymbolizer>
            <Fill>
              <!-- CssParameters allowed are fill (the color) and fill-opacity -->
              <CssParameter name="fill">#4DFF4D</CssParameter>
              <CssParameter name="fill-opacity">
                <ogc:Div>
                  <ogc:PropertyName>PERSONS</ogc:PropertyName>
                  <ogc:Literal>30e6</ogc:Literal>
                </ogc:Div>
              </CssParameter>
            </Fill>     
          </PolygonSymbolizer>

(donde 30e6 es la población de California)

    
respondido por el Ian Turton 23.10.2010 - 21:34
2

Puede usar GDAL para hacer esto, ya sea a través de archivos VRT, o configurando los valores mediante programación, accediendo a la cuarta banda de un conjunto de datos RGBA (como un GeoTiff). Mostraré cómo usar un VRT porque es algo más simple: a partir de un Tiff RGB, puede crear una imagen paletada como De acuerdo con las preguntas frecuentes :

# translate the rgba tiff to a VRT
gdal_translate -of VRT rgb.tif rgb.vrt

# modify the color table in an editor

# translate back to an image
gdal_translate rgb.vrt mask-by-alpha.tif

En el paso de edición, abra el rgb.vrt resultante y modifique la tabla de colores según sea necesario, ajustando los valores de c4 (0-255) para establecer alfa:

<VRTDataset rasterXSize="226" rasterYSize="271">
  <VRTRasterBand dataType="Byte" band="1">
    <ColorInterp>Palette</ColorInterp>
    <ColorTable>
      <Entry c1="238" c2="238" c3="238" c4="0"/>
      <Entry c1="237" c2="237" c3="237" c4="64"/>
      <Entry c1="236" c2="236" c3="236" c4="128"/>
      <Entry c1="229" c2="229" c3="229" c4="255"/>
    </ColorTable>
  </VRTRasterBand>
</VRTDataset> 
    
respondido por el scw 22.10.2010 - 20:15
1

Me gusta eso, nunca antes había pensado en ese concepto.

Si tiene acceso a FME o la extensión de Interoperabilidad de datos en ArcGIS, hay un montón de transformadores que le permitirán manipular la banda Valores en un dataset ráster, incluyendo banda alfa.

RasterExpressionEvaluator, RasterInterpretationCoercer y RasterBandOrderer son los que probaría al principio. Luego, puede importar / usar los datos en cualquier herramienta de visualización / SIG.

Un colega mío utilizó una idea similar para crear contraseñas 'ocultas' dentro de una imagen raster: enlace

Divulgación: trabajo para Safe Software - fabricantes de FME.

    
respondido por el Mark Ireland 21.10.2010 - 23:33
1

Una descripción más de Josh sobre cómo implementarla en QGIS

Tutorial muy bueno y detallado.

    
respondido por el radek 19.02.2015 - 18:09

Lea otras preguntas en las etiquetas