Как реализовать альфа-карту значения в ГИС?

14

Недавно я немного изучил картограммы и наткнулся на интересную альтернативу - карты « значение за альфа» .

Концепция описана более подробно здесь, и полная статья доступна [не открыто] [здесь] 2 .

В блоге indiemaps есть некоторые подробности о реализации :

... все вышеперечисленные графические изображения были созданы с помощью ActionScript 3, используя только текстовый редактор и последний бесплатный Flex SDK ...

Как вы могли бы реализовать нечто подобное в пакете ГИС (ArcGIS? QuantumGIS?)? Или R и ggplot2? Или питон?

Радек
источник
Вся статья доступна (для всех) по адресу geovista.psu.edu/publications/2010/RothEtAl_2010_CJ.pdf
Ян Тертон
правда, там нет цифр, хотя: [
radek 21.10.10
4
Попробуйте personal.psu.edu/rer198/publications/RothEtAl_2010_CJ.pdf, который, как уверяет Роб, тоже имеет цифры.
Ян Тертон

Ответы:

7

Вот метод для выполнения Alpha By Value в QGIS

http://nathanw.net/2013/06/27/alpha-by-value-choropleth/

Вы можете использовать новые ramp_colorи scale_linearфункции и данные, определенные символы

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)))

введите описание изображения здесь

Натан У
источник
1
Хорошая работа (хотя я не уверен насчет цветовой шкалы - хотя я понимаю, что это просто полезные инструкции). Хорошим дополнением может быть то, как сделать так, чтобы легенда сочеталась с ним.
Энди W
Да, цветовая шкала на самом деле не работает. Если у вас есть лучшее предложение, я могу сделать обновленное изображение. Думал о легенде, обновлю, как только у меня будет хороший план. (Это будет работать с QGIS 2.0)
Натан W
1
Я попробовал белое и черное, которое выглядит довольно круто i.imgur.com/Wfg8T8P.png
Натан W
Проверьте оригинальную статью Рота - они предложили скаты. Из-за десатурации они используют некоторые из (изначально) насыщенных двухцветных пивных рамп. Черные фоны выглядят хорошо для них, потому что они обеспечивают больший / более потрясающий контраст с фоном IMO. Я написал кое-что о моих предположениях здесь .
Энди W
@AndyW обновлено (возможно) лучшим изображением.
Натан W
5

В R вы можете читать полигоны и наносить их на устройство, поддерживающее прозрачность. Здесь я использую устройство windows (), R 2.12.0 с пакетами rgdal и 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)))

альтернативный текст

mdsumner
источник
Спасибо mdsumner! Это выглядит ближе всего к тому, чего я хотел бы достичь. Немного начал возиться с пространственной функциональностью R, поэтому сейчас попробую повторить это с моими данными.
Радек
Еще несколько примеров в R: dsparks.wordpress.com/2011/10/24/…
radek
4

Я бы посоветовал вам проверить сайт Geo Vista и их программное обеспечение. Визуальная Дознание Toolkit , предоставляет программу с графическим интерфейсом для реализации карт chloropleth би-мерный (я знаю один плакат здесь работает в этом проекте , и может быть в состоянии указать на другие ресурсы).

Я думаю, что сообщения в блоге картографиста достаточно, чтобы объяснить технику, но вот довольно классная статья (открытая для общественности), чтобы увидеть ее применение на практике.

Геовизуальная аналитика для улучшения интерпретации статистических данных пространственного сканирования: анализ смертности от рака шейки матки в США Джин Чен, Роберт Э Рот, Адам Т Найто, Юджин Дж. Ленгерих и Алан М Макирчен Международный журнал здравоохранения География 2008, 7:57

Я надеюсь увидеть примеры кода для Python и R тоже! По сути, любая программа, которая может реализовать двухмасштабную цветовую схему (или двумерную), может создать значение по альфа-карте. Хотя все реализации, которые я видел в списке до сих пор, относятся к картам с хороплетом, нет никаких причин, по которым вы не могли бы реализовать это и для растровой или точечной карты.


Недавно я написал сообщение в блоге о том, как реализовать их в ArcGIS, Создание ценности с помощью альфа-карт с помощью ArcMap . Это в основном влечет за собой создание отдельных слоев для данной прозрачности, а затем использование инструментов векторного редактирования, доступных в ArcMap, для создания необходимой двумерной легенды (или использование поддельной карты-врезки для репликации легенды, если вы хотите создать карту VBA на черном фоне).

введите описание изображения здесь

введите описание изображения здесь

Энди У
источник
Спасибо Энди. VIT выглядит довольно интересно - придется попробовать.
Радек
Требуется немного повозиться с вводом данных, но работает из коробки. Greaat инструмент для поискового анализа. Единственная проблема - я не могу найти способ экспортировать данные для дальнейшей обработки.
Радек
3

Вы можете сделать это в uDig, используя стиль на основе SLD, который вычисляет% непрозрачности, используя математические функции в спецификации фильтра OGC. Я не уверен, насколько эффективно это будет, но, безусловно, может быть использовано для доказательства концепции.

Я создал демо на http://ian01.geog.psu.edu/geoserver/www/cartogram/alphabyvalue.html с обсуждением на http://ian01.geog.psu.edu/geoserver_docs/cartogram/cartogram. HTML . Оказывается, это довольно легко.

          <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>

(где 30e6 - население Калифорнии)

Ян Тертон
источник
Спасибо, Иэнт. Можно ли автоматизировать его и применить эти стили на основе «на полигон», используя одну из переменных?
Радек
Вам нужно было бы поместить функцию для вычисления значения между 0-1 в параметре непрозрачности.
Ян Тертон
Разве это не должно быть «Карта значений по альфа» вместо «Картограммы значений по альфа»? ian01.geog.psu.edu/geoserver_docs/cartogram/index.html правильно утверждает, что: «Картограмма - это карта, в которой вместо области или расстояния подставляется какая-то другая переменная».
Подземье
1
вероятно :-) Но другое определение картограммы - это «карта, с которой вы облажались, чтобы составить точку»
Ян Тертон
2

Вы можете использовать GDAL, чтобы сделать это, либо через файлы VRT, либо путем программной установки значений, получая доступ к четвертой полосе набора данных RGBA (такой как GeoTiff). Я покажу, как использовать VRT, потому что это несколько проще: начиная с RGB Tiff, вы можете создать изображение на поддонах согласно FAQ :

# 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

На этапе редактирования откройте получившийся результат rgb.vrtи при необходимости измените таблицу цветов, изменив c4значения (0-255), чтобы установить альфа:

<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> 
SCW
источник
Спасибо, scw. Как будет выглядеть мой рабочий процесс для сценария с 3k векторных полигонов в качестве входных данных? Должен ли я сначала создать карту хороплета без альфа - сохранить как растр - а затем скорректировать значения растра? Я предполагаю, что значения должны быть адаптированы на основе «на полигон»? И я должен был бы как-то автоматизировать это в соответствии с полем, которое будет
определять
1

Мне это нравится - я никогда раньше не думал об этой концепции.

Если у вас есть доступ к FME или расширению Data Interoperability в ArcGIS, то существует множество преобразователей, которые позволят вам манипулировать значениями диапазона в наборе растровых данных, включая альфа-диапазон.

RasterExpressionEvaluator, RasterInterpretationCoercer и RasterBandOrderer - это те, которые я бы попробовал сначала. Затем вы можете импортировать / использовать данные в любом ГИС / инструменте Visulisation.

Мой коллега использовал аналогичную идею для создания паролей, «скрытых» внутри растрового изображения: http://www.fmepedia.com/index.php/PasswordGenerator

Раскрытие информации: я работаю на Safe Software - производителей FME.

Марк Ирландия
источник
Спасибо Марк К сожалению, у меня нет доступа к FME. Взаимодействие данных не включено в мою лицензию на
универмаг
1

Еще одно описание от Джоша о том, как реализовать это в QGIS

введите описание изображения здесь

Очень хороший и подробный учебник.

Радек
источник