Як реалізувати карту значень за альфами в ГІС?


14

Нещодавно я щось читав про картограми і натрапляв на цікаву альтернативу - значення за альфа- картами .

Концепція описана більш докладно тут, і повний документ доступний [не відкрито Тхо] [тут] 2 .

У блозі indiemaps є деякі подробиці щодо впровадження :

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

Як ви могли реалізувати щось подібне у пакеті GIS (ArcGIS? QuantumGIS?)? Або R і ggplot2? Або Пітон?


Весь документ доступний (усім) на geovista.psu.edu/publications/2010/RothEtAl_2010_CJ.pdf
Ian Turton

правда, у ній немає цифр: [
radek

4
Спробуйте personal.psu.edu/rer198/publications/RothEtAl_2010_CJ.pdf, за яким Роб запевняє і мене.
Ян Тертон

Відповіді:


7

Ось метод здійснення альфа-значення за 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
Хороша робота (хоча я не впевнений у кольоровій рампі - хоча я усвідомлюю, що це просто корисна інструкція). Приємним доповненням може бути те, як змусити легенду піти з нею.
Andy W

Так, кольоровий пандус насправді не працював. Якщо у вас є найкраща пропозиція, я можу зробити оновлене зображення. Думав про легенду, оновлю, як тільки у мене є гарний план. (Це буде працювати з QGIS 2.0)
Nathan W

1
Я спробував біло-чорний, який має гарний вигляд i.imgur.com/Wfg8T8P.png
Nathan W

Ознайомтеся з оригінальною статтею Roth - вони запропонували пандуси. Через десатурацію вони використовують деякі більш (спочатку) насичені двоваріантні кольорові пандуси. Чорні фони для них добре виглядають, оскільки вони забезпечують більший / приголомшливіший контраст з фоновим IMO. Тут я написав кілька своїх міркувань .
Andy W

@AndyW оновлений (можливо) кращим зображенням.
Nathan 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)))

alt текст


Дякую mdsumner! Це ближче до того, що я хотів би досягти. Почавши трохи возитися з просторовою функціональністю R, тому зараз спробую повторити його з моїми даними.
radek

Ще кілька прикладів на R: dsparks.wordpress.com/2011/10/24/…
radek

4

Я б запропонував вам переглянути сайт Geo Vista та їх програмне забезпечення. Набір інструментів Visual Inquiry (Інструмент візуальних запитів) передбачає програму GUI для реалізації двовимінних хлороплетових карт (я знаю, що один плакат тут працює в цьому проекті і може бути в змозі вказати на інші ресурси).

Я вважаю, що публікація в блозі картограмерів є достатньою для пояснення методики, але ось досить класна стаття (відкрита для публіки), щоб побачити її використання на практиці.

Геовізуальна аналітика для покращення статистичної інтерпретації просторового сканування: аналіз смертності від раку шийки матки США Джин Чен, Роберт Е Рот, Адам Т Найто, Євген Дж. Ленгерих та Алан М МакЕхрен Міжнародний журнал Health Geographics 2008, 7:57

Я сподіваюся також побачити кілька прикладів коду для Python та R! В основному будь-яка програма, яка може реалізувати двомасштабну кольорову схему (або двовимірну), може створити значення за допомогою альфа-карти. Хоча всі реалізації, які я бачив до цього часу, перераховані для карт choropleth, немає жодної причини, щоб ви не могли це також реалізувати для растрової чи точкової карти.


Нещодавно я написав допис у блозі про те, як їх реалізувати в ArcGIS, Створюючи значення за допомогою альфа-карт за допомогою ArcMap . Це, в основному, передбачає створення окремих шарів для заданої прозорості, а потім використання інструментів редагування векторів, доступних у ArcMap, для створення необхідної двовимірної легенди (або використання підробленої карти вставки для копіювання легенди, якщо ви хочете створити чорну фонову карту VBA).

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

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


Thx Енді. VIT виглядає досить цікаво - доведеться спробувати.
radek

Потрібно трохи повозитися з введенням даних, але працює нестандартно. Жирний інструмент для розвідувального аналізу. Єдине питання - я не можу знайти жодного способу експорту даних для подальшої обробки.
radek

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 - населення Каліфорнії)


Дякую Іант. Чи можна було б його автоматизувати і застосувати ці стилі на основі 'per polygon' за допомогою однієї із змінних?
radek

Вам потрібно буде поставити функцію для обчислення значення між 0-1 у параметрі непрозорості.
Ян Тертон

Чи не повинна це бути "Карта цінності за альфами" замість "Картограми цінності за альфами"? ian01.geog.psu.edu/geoserver_docs/cartogram/index.html правильно стверджує, що: "Картограма - це карта, де на місці місцевості чи відстані заміщена якась інша змінна."
underdark

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> 

Дякую скажи. Як саме виглядав би мій робочий процес для сценарію з 3k векторними багатокутниками як вхідними? Чи слід спочатку створити хороплет-карту без альфа - зберегти як растровий - і потім скорегувати растрові значення? Я вважаю, що слід адаптувати значення на основі "за багатокутником"? І мені доведеться якось автоматизувати його відповідно до поля, яке буде визначати альфа-значення ..
radek

1

Мені це подобається - я ніколи раніше не думав над цією концепцією.

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

RasterExpressionEvaluator, RasterInterpretationCoercer і RasterBandOrderer - це те, що я спробував би спочатку. Тоді ви можете імпортувати / використовувати дані в будь-якому інструменті GIS / Visulisation.

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

Розкриття інформації: Я працюю для виробників безпечного програмного забезпечення FME.


Thx Mark. На жаль, у мене немає доступу до FME. І сумісність даних не включена до моєї універсальної ліцензії на ArcGIS: [
radek

1

Ще один опис Джоша про те, як його реалізувати в QGIS

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

Дуже хороший і детальний підручник.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.