Я пытаюсь сделать рисунок, показывающий азимутальные данные с различным диапазоном неопределенностей в каждой точке. Эта фигура старой школы из газеты 1991 года отражает идею «сюжета Боути», к которой я стремлюсь:
Любые предложения о том, как я мог бы сделать аналогичную фигуру? Я относительный новичок в GIS, но у меня есть доступ к ArcGIS через мой университет. Мой опыт в Arc был ограничен созданием геологических карт, поэтому мне не приходилось делать что-то слишком экзотическое.
Я разбирался в опциях символов в Arc и QGIS, но не видел никаких настроек, которые, как я думал, сработали бы. Обратите внимание, что это не просто поворот символов в форме бабочки по азимуту; Угловой диапазон каждой "бабочки" должен быть разным.
Я бы оценил мои навыки Python как «сильный промежуточный» и мои навыки R как «низкий промежуточный», так что я не прочь хакерство что - то вместе с matplotlib
и mpl_toolkits.basemap
или аналогичными библиотеками в случае необходимости. Но я подумал, что мне нужно будет посоветоваться здесь, прежде чем идти по этому пути, на случай, если есть более простое решение из ГИС, о котором я просто не слышал.
100->120
и эквивалентным диапазоном на 180 градусов в180->200
Ответы:
Это требует своего рода «вычисления поля», в котором вычисленное значение (на основе широты, долготы, центрального азимута, неопределенности и расстояния) представляет собой форму бабочки, а не число. Поскольку при переходе от ArcView 3.x к ArcGIS 8.x такие возможности расчета полей были значительно более сложными и никогда не были полностью восстановлены, в настоящее время мы вместо этого используем сценарии на Python, R или чем-то еще: но процесс мышления все еще остается одни и те же.
Я проиллюстрирую с рабочим
R
кодом. В его основе лежит расчет формы галстука-бабочки, который мы поэтому инкапсулируем как функция. Функция на самом деле очень проста: чтобы сгенерировать две дуги на концах лука, необходимо регулярно прослеживать последовательность (по азимуту). Для этого требуется возможность найти координаты (lon, lat) точки на основе начального (lon, lat) и пройденного расстояния. Это делается с помощью подпрограммыgoto
, где происходит весь тяжелый арифметический подъем. Остальное просто готовит все к применению,goto
а затем применяет его.Это предназначено для применения к таблице, записи которой у вас уже должны быть в той или иной форме: каждая из них дает местоположение, азимут, неопределенность (в виде угла на каждую сторону) и (необязательно) указание того, насколько велико сделать тетива. Давайте смоделируем такую таблицу, разместив 1000 галстуков по всему северному полушарию:
На данный момент все почти так же просто, как любой расчет поля. Вот:
(Временные тесты показывают, что
R
может производить около 25 000 вершин в секунду. По умолчанию для каждой степени азимута существует одна вершина, которую можно задать с помощьюeps
аргумента tobowtie
.)Вы можете сделать простой график результатов
R
сами по себе в качестве проверки:Чтобы создать вывод шейп-файла для импорта в ГИС, используйте
shapefiles
пакет:Теперь вы можете проецировать результаты и т. Д. В этом примере используется стереографическая проекция северного полушария, а бабочки окрашены квантилями неопределенности. (Если вы посмотрите очень внимательно на 180 / -180 градусов долготы, вы увидите, где эта ГИС обрезала галстуки-бабочки, которые пересекают эту линию. Это общий недостаток ГИС; это не отражает ошибку в самом
R
коде.)источник