Используйте ГИС для получения географической информации для одной точки

78
11

Я не совсем уверен, с чего начать. Я только начал изучать это на прошлой неделе, но, надеюсь, кто-то может помочь мне в правильном направлении.


Целью моего проекта является возможность использовать geohash, декодировать его до широты и долготы, проверять точку против некоторых данных ГИС и узнавать некоторую информацию об этой точке, такой как рельеф (это тело вода? Озеро? Океан? Это горная местность? Это поле?), высота или другие полезные вещи. Затем просто сможете отобразить эту информацию в качестве стартера.


Что я собрал до сих пор, так это то, что мне нужно получить некоторые бесплатные данные ГИС (это для школы, поэтому у меня нет денег!). Я хотел бы иметь данные мира, и я нашел несколько онлайн (http://www.webgis.com/terraindata.html), но я не знаю, куда идти отсюда. Я видел некоторые инструменты, такие как PostGIS в качестве базы данных.


В настоящее время я использую Java для некоторых других частей проекта, поэтому, если возможно, я хотел бы придерживаться Java.


Может кто-нибудь помочь мне или указать мне в правильном направлении?

спросил(а) 2021-01-28T00:24:31+03:00 4 месяца, 3 недели назад
1
Решение
88

Начните смотреть PostGIS; это происходит в C, но развивается в противном случае в основном Java-парни и поддерживает хорошие (бесплатные) инструменты Java, такие как uDig.


Что касается геопространственных основ: вот пример некоторых взаимодействий, которые я получаю от чувства, которое вам нужно начать.


Вы начинаете с источника данных, скажем, данные бесплатной TIGERLINE в США. Используя GDAL, вы форматируете данные для своей базы данных; как правило, вы можете обрабатывать шейп файлы, kml и т.д. непосредственно в таблицу, которая будет иметь некоторые метаданные (географические названия и т.д.) и ключевой пространственно включенный геометрия столбца. Здесь я действительно рекомендую PostGIS. У меня есть такая таблица, основанная на переписи на моем ноутбуке, вот как вы работаете с ней в своем примере с водой:


pepe=> \d tl_2009_06075_areawater
Table "public.tl_2009_06075_areawater"
Column | Type |
----------+------------------------
gid | integer |
ansicode | character varying(8) |
hydroid | character varying(22) |
fullname | character varying(100) |
the_geom | geometry |
Indexes:
"tl_2009_06075_areawater_pkey" PRIMARY KEY, btree (gid)
Check constraints:
"enforce_srid_the_geom" CHECK (st_srid(the_geom) = 4269)

Обратите внимание на число 4269, то есть на геометрию SRID.


Теперь скажите, что у вас есть точка, например -122.492983 37.717753 (обратите внимание на широту долготы), заданную входом GPS или любым другим. В каком водоеме он может находиться?:


pepe=> select fullname from tl_2009_06075_areawater 
where the_geom &&
ST_GeomFromText('POINT(-122.492983 37.717753)', 4269);

fullname
---------------
Lk Merced

Pacific Ocean


Озеро Мерсед - это место в Сан-Франциско, я все время прохожу мимо - это немного приливное болото, поэтому, возможно, Бюро переписи считает его частью Тихого океана - интересно, я этого не знал! Надеюсь, это поможет вам начать.

ответил(а) 2021-01-28T00:24:31+03:00 4 месяца, 3 недели назад
44

Посмотрите на набор данных SRTM. Существуют различные версии для различных уровней точности (и размера). Вы получаете данные в необработанном формате, вам придется интерпретировать его самостоятельно, но это не сложно. Это очень хорошо документировано.

ответил(а) 2021-01-28T00:24:31+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема