Showing posts with label ГИС. Show all posts
Showing posts with label ГИС. Show all posts

01/12/2023

Установка последней версии SagaGIS в QGIS

В профильном сообществе попросили написать гайд по установке актуальной версии SagaGIS в QGIS. Исполняю обещание. В принципе, в составе QGIS SagaGIS уже включён, но во-первых, это временное явление (вроде как в новых версиях решили исключить SagaGIS из ядра), а во-вторых, в составе установочного пакета QGIS поставляется какая-то уж очень древняя версия Saga — кажется 7-я, тогда как актуальная версия на момент написания заметки — 9.2. 
По пунктам, кратенько. Потом постараюсь добавить подробностей, когда будет больше свободного времени. 
  1. Скачиваем последнюю версию SagaGIS
  2. Распаковываем скачанный архив в какую-нибудь папку. Я предпочитаю OSGeo4W64\apps\, но можно любую другую.
  3. В QGIS отключаем плагин ядра SAGA GIS provider и скачиваем Processing Saga NextGen Provider. В Настройках последнего указываем путь к SagaGIS — куда мы его распаковали на предыдущем шаге. Закрываем QGIS. 
  4. В папке с SagaGIS лежит архив saga4qgis.zip, внутри которого есть инструкция, что надо делать с содержимым этого архива. Не буду повторять её, но суть такова: содержимое архива надо распаковать (удалив предварительно уже существующее) в папку     C:\Users\...\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\processing_saga_nextgen 
    Только не делайте это «в лоб», сперва найдите где конкретно лежит файл SagaNameDecorator.py и папка \description\ — удалите их и скопируйте на их место содержимое архива.
  5. В принципе всё готово, можно запускать QGIS и радоваться возможности работать с последней версией SagaGIS. Но есть еще одна маленькая хитрость, сильно облегчающая работу. Надо открыть файл SagaAlgorithm.py и заменить
elif isinstance(param, (QgsProcessingParameterString, QgsProcessingParameterField)):
                command += ' -{} "{}"'.format(param.name(), self.parameterAsString(parameters, param.name(), context))
на
elif isinstance(param, (QgsProcessingParameterString, QgsProcessingParameterField)):
                command += ' -{} "{:.10}"'.format(param.name(), self.parameterAsString(parameters, param.name(), context))
Для чего нужен последний пункт: дело в том, что инструменты SagaGIS, работающие с векторными исходниками, на входе принимают только shape файлы SHP. А те, в свою очередь, согласно стандарту не поддерживают имена полей длиннее 10 символов. Поэтому если вы попробуете подсунуть в SagaGIS на вход какой-нибудь Geopackage с именем поля 11 символов и больше, то в исходном варианте SagaAlgorithm.py вы получите ошибку. Мой же код автоматически обрезает имя поля по 10 символу и в результате формируется правильный shape-файл. 
К слову сказать, похожие улучшения можно вставлять и в другие Processing Provider плагины — они все сделаны более или менее похожим образом. Однако важно понимать, что если вы ухитрились создать в Geopackage несколько столбцов (полей) длинными именами, первые 10 символов которых побуквенно совпадают, то готовьтесь к удивительным глюкам.

04/01/2023

Генерация пользовательской СК QGIS

В рамках семинара для коллег по основам работы в QGIS «родилась» вот такая утилитка для генерации пользовательской СК в формате строки "proj.4" на основе уже существующей СК и высчитанных сдвижек по осям X и Y.
Задача традиционная: нам прислали какой-то там DXF в «левых» метровых координатах (далее пусть будет СК-X) с нулём координат у местной водокачки и надо худо-бедно положить его на спутниковую  (или любую другую в общеупотребимой СК) подложку в QGIS. Сразу хочу предупредить, что если вы не можете похвастаться отменным везением, то результат будет именно что «худо и бедно», но хоть как-то.
Простейший вариант решения проблемы: сместить карту прямо в автокаде так, что б общие точки на на карте и подложке более или менее совпадали. Вариант хороший и рабочий, но если вам начнут присылать другие данные в этой «левой» СК-X, то придется и их смещать вручную.
Я предлагаю подойти к решению этой проблемы с другого бока: взять одну из общеупотребимых  спроецированных метровых СК (далее СК-А) и на её основе сгенерировать новую пользовательскую СК (СК-Б - иными словами, это та же СК-X, но с известными параметрами), подобрав для неё смещения по X и Y так, чтоб DXF с присвоенной СК-Б совмещался с подложкой. Тут самое сложное: найти такую СК-А, чтоб угол совпадал с СК-X. По опыту, в 90% случаев подходит либо одна из 3-градусных зон Pulkovo 42, либо соответствующая региональная МСК (частенько эта таинственная СК-X и вовсе является какой-нибудь «МСК-59 зона 2»). Ну а дальше всё просто: «скалываем» координаты общей точки в СК-X (в автокаде, к примеру) и в СК-А (для этого можно использовать один из множества плагинов в QGIS, не забыв сделать СК-А системой координат проекта), копируем их в соответствующие ячейки моей таблицы, потом вставляем строку proj.4 от СК-А и строкой ниже получаем новую строку proj.4 уже для нашей новой кастомной СК-Б. Теперь эту строку можно добавить в качестве пользовательской проекции к QGIS и открывать в ней наш DXF, каталоги скважин и прочие данные.
Отлично понимаю, что с точки зрения тру топографов, географов и картографов все эти ужимки - жуткая ересь, прошу отнестись снисходительно.
P.S.: Добавил усреднение по нескольким общим точкам с проверкой на несовпадение угла поворота.

08/04/2022

Дайджест ссылок

International Chronostratigraphic Chart. Международная хроностратиграфическая шкала. Интерактивное. Красивое.
An interactive version of the International Chronostratigraphic Chart, based on its Semantic Web representation.
Creating REMs in QGIS with the IDW Method. Создание и колоризация относительных высотных моделей в QGIS. Прикольные какие картинки получаются, реально очень красивые. Заодно узнал о том, что такое "относительная высотная модель" - никогда раньше не сталкивался.
In this tutorial you will convert a digital elevation model (DEM) along a river of your choice into a relative elevation model (REM) in QGIS using a series of steps that include the Inverse Distance Weighted (IDW) interpolation method.
Civils.ai. Набор веб-приложений с геотехническими расчетами. Бесплатно, т.е. даром.
We're building the world's first database of digital construction information, along with open-source tools to unleash it's potential. You are always a click away from essential Engineering data & expertise, from anywhere in the world.
A Reinterpretation of Historic Aquifer Tests of Two Hydraulically Fractured Wells by Application of Inverse Analysis, Derivative Analysis, and Diagnostic Plots. Очень интересная статья о попытке переинтерпретации старых откачек новыми методами.
Aquifer test methods have greatly improved in recent years with the advent of inverse analysis, derivative analysis, and diagnostic plots. Updated analyses of past aquifer tests allow for improved interpretations of the data to enhance the knowledge and the predictive capabilities of the flow system. This work thoroughly reanalyzes a series of pre- and post-hydraulic fracturing, single-well aquifer tests conducted in two crystalline rock wells in New Hampshire as part of an early 1970’s study. Previous analyses of the data had relied on older manual type-curve methods for predicting the possible effects of hydraulic fracturing. This work applies inverse analysis, derivative analysis, and diagnostic plots to reanalyze the 1970’s aquifer test data. Our results demonstrate that the aquifer tests were affected by changes in flow regimes, dewatering of the aquifer and discrete fractures, and changes due to well development. Increases in transmissivities are related to well development prior to hydraulic fracturing, propagation of a single, vertical fracture hydraulically connecting the two wells after stimulation and expansion of troughs of depression. After hydraulic fracturing, the estimated total yield of the individual wells increased by 2.5 times due to the hydraulic fracturing. However, the wells may be receiving water from the same source, and well interference may affect any significant increase in their combined yield. Our analyses demonstrate the value in applying inverse analysis, derivative analysis, and diagnostic plots over the conventional method of manual type-curve analysis. In addition, our improvement in the aquifer test interpretation of the 1970’s test data has implications for more reliable estimates of sustained well yields

27/09/2021

Как выудить в точки рельеф из SRTM или AW3D30

Иногда данных о рельефе территории исследования так мало, что приходится прибегать к помощи космических технологий. Точность у этой информации, прямо скажем, не ахти, особенно на  застроенных или лесистых территориях, но уж что есть —  дарёному коню, как говорится. Знаю, уже есть алгоритмы, которые с помощью нейросетей умеют удалять с этих массивов дома и небольшие лесочки, но пока не встречал их в открытом доступе, пригодном к тому же для использования неквалифицированному пользователю.
Конечной целью предполагается получение CSV файла вида X, Y, Z.  Потребуется следующий инструментарий:
  1. QGIS
  2. Плагины к нему:
    • Какой-нибудь плагин для подгрузки подложек типа QuickMapServices. Ну или загрузить их вручную через XYZ Connections.
    • SRTM-Downloader
    • Point sampling tool
  3. Аккаунты как минимум на одном из сайтов с рельефом со спутников:
Сразу предупрежу, что выудить данные с японского сайта — тот еще квест, но в детали вдаваться не буду. В сети есть инструкции. С NASA возни гораздо меньше, особенно если вам повезло и SRTM-Downloader работает как надо.
Итак, алгоритм следующий:
  1. В QGIS любым известным способом открываем картографическую подложку. Это не обязательно, но как правило сильно облегчает работу.
  2. Создаем временный слой типа Polygon. Рисуем в нем полигон по контуру территории, для которой нам нужен рельеф. Зуммируемся так, чтоб нарисованный полигон занимал большую часть экрана (Zoom to Layer).
  3. С помощью строенного в QGIS инструмента Vector/Random points in polygons генерируем достаточное количество точек в пределах нарисованного в предыдущем пункте полигона. При этом создается новый временный слой с точками.
  4. С помощью SRTM-Downloader скачиваем растры с рельефом для области, показанной на экране. Для чего жмём последовательно Set Canvas Extend и Download. Для данных ALOS придется скачивать данные через сайт и подгружать в QGIS вручную.
  5. Запускаем Point sampling tool, указываем слой с точками из пункта 3 в качестве Layer containing sampling points, а в качестве Layers with fields/bands to get values from — растры (можно указать сразу несколько) из пункта 4. Тут важно отметить, что точки и растры должны быть в одной системе координат (WGS 84 -  EPSG 4326 в случае если мы работаем с SRTM). 
  6. На выходе получаем векторный слой с точками с атрибутами в виде значений рельефа. Если область интереса попадает сразу на несколько растров, то столбцов с атрибутами будет несколько. Надеюсь, не надо рассказывать, как из нескольких столбцов получить один — это можно сделать как через Field Calculator в самом QGIS, так и в Excel или любом другом табличном редакторе.
  7. Пересохраняем полученный точечный слой в виде CSV, не забывая выбрать нужную нам систему координат (если не выбирать, то по умолчанию  координаты будут представлены в виде градусов) и указать, что GEOMETRY сохраняется в виде AS_XY.

31/12/2020

О консультациях

Коллеги, кто со мной общался, знают, что обычно я не отказываю в добром совете. Иногда мне пишут студенты — им я особенно люблю помогать. Сегодня объяснял магистранту РУДН из Йемена, как сделать тестовую задачку по QGIS (оказывается, в РУДН есть спецкурс по этой программе). Задачка была простая, но с небольшой закавыкой: надо было совместить на карте две таблицы со скважинами с координатами в разных проекциях и выполнить некоторые простейшие манипуляции. На решение этой задачи у меня ушло примерно 5 минут (в том или ином виде я похожие задачки решаю регулярно), еще 2 часа ушло на объяснение студенту, как он может это сделать самостоятельно (у него небольшие проблемы с русским языком, поэтому некоторые вещи приходилось объяснять дважды, но другими фразами).
Времени конечно немного жалко, но я поставил себя на место преподавателя — мне было бы досадно, если бы мои домашние задания за учеников делал кто-то другой. Поэтому 2 часа, а не 5 минут. Можно сказать, это моя принципиальная позиция в подобных вопросах, имейте её в своем виду, когда просите у меня помощи.

04/05/2017

Модуль для моделирования MODFLOW для qGIS

Благодаря записи An overview of Freewat, the new MODFLOW interfase in QGIS в гидрогеологическом блоге Hatari labs узнал о существовании такой замечательной штуке, как Freewat, а это ни много ни мало — целый препроцессор для создания и визуализации моделей MODFLOW-2005, MODFLOW-NWT, MODFLOW-OWHM, MODPATH, MT3DMS, MT3D-USGS, MODPATH, SEAWAT, UCODE-2014 в мощнейшем ГИС-комплексе qGIS.
И что самое главное: что qGIS, что Freewat — свободное программное обеспечение, распространяемое бесплатно.
Кстати о qGIS, я буквально недавно практически пинками заставил себя изучить базовую функциональность этого комплекса и остался весьма впечатлен. Он немного глючный (но не более, чем тот-же MapInfo, впрочем), но возможности у него просто безграничны. После перевода своего workflow под этот ГИС я уменьшил сроки подготовки графического материала для отчетов примерно в два раза. И это с учетом того, что я и 10% возможностей не изучил и процесс подготовки карт для отчета сопровождался отладкой этого workflow (т.е. последующие проекты будут готовиться еще процентов на 30 быстрее). В общем, рекомендую всеми руками и ногами.

25/08/2014

Гидрогеологический дайджест

Depletion of Central Valley's groundwater may be causing earthquakes. Снижение уровня подземных вод может служить причиной землетрясений. И наоборот, кстати.
For years, scientists have wondered about the forces that keep pushing up California's mighty Sierra Nevada and Coast Ranges, causing an increase in the number of earthquakes in one part of Central California.
Можно ли использовать воду из скважины в коттеджном поселке для питья? Добротная порция «страшилок» от уважаемого коллеги из Питера. Жаль, что в статье не приведена статистика о том, сколько коттеджных поселков водоснабжаются из нелегальных скважин. Подозреваю, что эта цифирь должна вселять железобетонную уверенность в завтрашнем дне у специалистов, занимающихся оценкой запасов подземных вод — без работы они точно не останутся. Разумеется, если у нас вдруг законодательство не изменится.
В соответствии с действующим законодательством, эксплуатирующая организация должна самостоятельно подавать отчетность об объемах добычи подземных вод, положении уровней в питьевом водоносном горизонте и качестве подземных вод в контролирующие органы. Однако, если управляющая организация не получила лицензию на право добычи подземных вод, надзорные органы могут не подозревать о существовании водозаборной скважины в том или ином коттеджном поселке.
То есть, подобного рода скважины используются нелегально, без лицензии, что при проведении плановой проверки сотрудниками Роспотребнадзора или Росприроднадзора может повлечь за собой штраф до 1 миллиона рублей (статья 7.3 КОАП РФ) или полный запрет на эксплуатацию скважины и требование об ее ликвидации.
MOD16 for actual evapotranspiration measurement. Карта величины эвапотранспирации, полученных со спутниковых датчиков. Карты лежат на ftp-сервере в форматах GeoTIFF и hdf (т.е. легко подгружается в любой более или менее современных GIS-пакет).
This project is part of NASA/EOS project to estimate global terrestrial evapotranspiration from earth land surface by using satellite remote sensing data. MOD16 global evapotranspiration product can be used to calculate regional water and energy balance, soil water status; hence, it provides key information for water resource management.
Australian groundwater modelling guidelines. Кратенькое (всего-то 200 страниц) руководство по гидрогеологическому моделированию из далекой Австралии. Очень толковое, должен заметить: мне особенно понравились советы по построению диаграммы сопоставления наблюденных и расчетных значений — узнал несколько полезных приемов.
Groundwater models are computational methods that simulate the profile of an underground water system. They have proven to be useful tools to provide insight into complex water system behaviour; to address a range of groundwater problems; and to support decision-making processes.

05/06/2012

Сколько метров в градусе

У моего блога небольшой юбилей — 100-я запись. Чуть более назад, когда я начинал это дело, мне и в голову не могло придти, что рубеж в сотню постов вообще будет преодолен. В голове тогда было идей на пару десятков записей, а вот поди ж ты. А поделиться в этот «зднаменательный» пост я хотел небольшим “know how”, которое будет очень полезно тем, кто столкнулся с реальными задачами, а не тестовыми примерами из обучающих наборов.
Большая часть программ для гидрогеологического моделирования с географическими координатами, выраженными в градусах, работать либо не умеют, либо умеют, но так, что лучше бы не умели вовсе. В то же время, общедоступные подборки векторных карт от сообщества OpenStreetMap, которые очень удобно использовать в качестве подложек для моделей, на беду представлены именно в градусной координатной сетке (Longitude/Latitude WGS84, если «выражаться» в терминах MapInfo). Так что же делать? Надо поменять градусную координатную сетку на метровую. В том же MapInfo это делается путем пересохранения нужного слоя в проекции Universal Transverse Mercator WGS84. Главное тут — не ошибиться сильно с зоной (Москва, в частности, находится в 37-й зоне), но в этом вопросе поможет разграфка зон UTM (via: Часто задаваемые вопросы по координатам, проекциям, системам координат).

07/04/2012

Как ускорить работу MapInfo

Думаю, для тех, кто много работает с этой программой, мой следующий совет новостью не станет, хотя лично я о этой функции частенько забываю. Так вот, если вы заметили, что MapInfo начал ни с того ни с сего заметно подтормаживать в процессе отрисовки карты при зуммировании или перетаскивании, то вам поможет функция Table\Maintenance\Pack Table, «натравленная» на самые большие открытые таблицы. Скорость работы возрастает на порядки. Не забудьте предварительно сохранить все таблицы и рабочее пространство (особенно его, т.к. в процессе «упаковки» таблицы будут закрыты).

06/03/2012

Единая государственная картографическая основа г. Москвы, предоставляемая ГУП "Мосгоргеотрест".

Ух-ты, смотрите что на торрентах выложили. Там на первом этапе возникнет необходимость всосать файлы в формате mif в MapInfo. Если это делать в лоб, то можно сильно утомиться. Для решения этой проблемы существует удобный набор скриптов: BatchTools.
Формат: MapInfo, Access, Oracle, DWG, DGN, DXF
Описание: Единая государственная картографическая основа г. Москвы, предоставляемая ГУП "Мосгоргеотрест".
"В соответствии с пунктом 1.1 Постановления Правительства Москвы от 19.01.1999г. №24 "О внедрении Единой государственной картографической основы г.Москвы для решения задач управления городским хозяйством с использованием автоматизированных технологий" Мосгоргеотрест Москомархитектуры является единственной уполномоченной Правительством Москвы организацией по созданию и ведению Единой государственной картографической основы г. Москвы на базе данных цифровых топографических планов, карт и схем масштабного ряда 1:2000 - 1:25000, формируемой в Мосгоргеотресте в рамках Геофонда г. Москвы, и несет ответственность за достоверность и юридическую чистоту информации, содержащейся в Единой государственной картографической основе г. Москвы."