У меня есть два шейп-файла, представляющих сетки со значениями, которые обозначены градуированными цветами, как показано ниже:
Вы можете видеть, что два шейп-файла охватывают одинаковые диапазоны данных, но присваивают немного разные цвета диапазонам в этих данных. Я хотел бы обозначить диапазоны в каждом из двух шейп-файлов, используя одинаковые цвета для одинаковых диапазонов, что упрощает сравнение файлов и позволяет использовать одну легенду.
Тем не менее, когда я пытаюсь классифицировать диапазоны с ручным интервалом, ArcGIS заставляет то, что должно быть самым верхним диапазоном, также включать минимальное значение из набора данных. Это можно увидеть в диапазоне «-81,64 - 10,00» левого фрейма данных ниже. Это заставляет весь слой обозначаться этим цветом. По сути, ArcGIS требует, чтобы минимальное значение в наборе данных использовалось в качестве значения в одном из диапазонов.
Есть ли способ обойти эту функцию?
Ответы:
Это определенно большая боль, когда ArcMap пытается быть полезным, даже если вы действительно этого не хотите.
Один из обходных путей, который я нашел, заключается в создании нового временного набора данных и добавлении нескольких точек с минимальными и максимальными значениями, которые, как вы знаете, вам понадобятся в выходных данных - просто убедитесь, что они охватывают весь диапазон.
Создайте ваши символы на основе этого поддельного набора данных и сохраните эти символы в файле слоя :
... затем импортируйте символы из файла * .lyr в ваш реальный набор данных:
источник
@ChrisW сказал:
Это заставило меня задуматься, и я действительно нашел способ установить диапазон классификации ниже минимального значения. Моя первоначальная проблема была построена вокруг того факта, что самый низкий диапазон классификации должен был содержать минимальное значение в данных.
Однако такое ограничение не применяется к другим используемым диапазонам классификации. Следовательно, можно заставить два (или более) диапазона классификации опуститься ниже минимального значения в данных. Один из них будет представлять предпочтительный минимальный диапазон классификации, а другой будет функционировать как фиктивный диапазон, содержащий минимальное значение.
Вот отправная точка, которую я использовал для классификации. Каждый из уровней в четырех фреймах данных был классифицирован с использованием определенного интервала 10 футов без учета диапазонов данных других уровней.
Максимальный диапазон классификации в любом из четырех фреймов данных составляет «от 0,01 до 10,00», а минимальный диапазон классификации - от «-110,62 до -110,00» (который в идеале станет «от -119,00 до -110,00»). Так как я пытаюсь сохранить 10-футовые интервалы, это означает всего 13 интервалов.
Я использую верхний левый фрейм данных в качестве источника для моей общей легенды. Я начинаю с открытия свойств слоя и иду к классификации. Поскольку я хочу, чтобы 13 интервалов были видны, мне нужно выбрать 14 интервалов, чтобы иметь доступный фиктивный диапазон. Я делаю это, выбирая Manual как метод и создавая 14 классов.
С диапазонами, установленными в их текущем состоянии (с самыми большими значениями вверху), любые изменения значения, введенного в диапазон, не будут влиять ни на что, кроме диапазона в самом низу списка. @ChrisW отметил, что это не ошибка, а особенность того, как ArcGIS назначает значения разрыва. Вот окно Свойства слоя после выбора ручного метода, но до внесения каких-либо изменений в диапазоны:
Чтобы решить эту проблему, я временно перевернул сортировку слоя. В этот момент самые низкие диапазоны находятся сверху, а самые высокие диапазоны - снизу.
Теперь, если я прокручиваю до конца списка диапазонов (где отображается самый высокий диапазон) и начинаю определять правильные интервалы снизу вверх, ArcGIS запомнит определенные мной диапазоны:
На этом изображении я определил верхнее значение в 5 из 14 диапазонов, начиная с наибольшего значения (10,00) и работая вниз.
Когда я доберусь до вершины списка и отредактирую свой 14-й диапазон, его минимальное значение все равно будет определено как минимальное значение в слое, так как у него нет другого диапазона ниже, чтобы он мог извлечь значение из:
Это не имеет значения, поскольку это фиктивный диапазон, о котором я упоминал ранее. В этот момент я снова изменяю сортировку слоя, поэтому самые высокие диапазоны снова оказываются наверху. На рисунке ниже показана обновленная легенда для верхнего левого фрейма данных, которая теперь отражает надлежащие диапазоны для всех четырех фреймов данных, включая 14-й фиктивный диапазон:
Следующим шагом является распространение этих изменений до остальных кадров данных. Однако некоторые проблемы очевидны, когда я пытаюсь импортировать символы в другие фреймы данных:
Как отметил @ChrisW, это связано с моим решением начать со слоя, который не имеет абсолютного минимального значения во всех фреймах данных. Похоже, что во фрейме данных не будут отображаться диапазоны, попадающие ниже диапазонов, существующих в исходном фрейме данных.
Если вы начинаете со слоя, подобного тому, который я сделал, лучшее решение, которое я нашел для этого, состоит в том, чтобы повторить шаги, которые я обсуждал выше для каждого из четырех фреймов данных; вручную определяя 14 классов, переворачивая сортировку классов, переопределяя вершину каждого диапазона, затем возвращая сортировку, чтобы поместить самые высокие диапазоны в вершину.
Однако самое простое решение - начать процесс классификации со слоя, имеющего наименьшее значение. Параметр «Импортировать символы» может затем использоваться правильно для других фреймов данных.
Наконец, я могу удалить три из легенд и либо скрыть фиктивный диапазон в оставшейся легенде, либо преобразовать его в графику и удалить фиктивный диапазон.
источник
Я столкнулся с той же самой проблемой, я думаю .... Если я правильно понимаю, у вас было два (или более) набора данных, и вам нужно, чтобы диапазоны масштаба набора данных соответствовали, чтобы можно было проводить сравнения.
Я решил это:
Извините, если это немного упрощенно или даже неправильно / плохо. Я долгое время пользовался GIS Stack Exchange и думал, что со временем я начал вносить свой вклад, так что это мой первый пост!
источник
save class breaks
СДЕЛАНО
источник
Хотя в классификации используются аналогичные диапазоны, данные не разделяют диапазон. Я думаю, что решение здесь состоит в том, чтобы решить это в легенде и цветовых назначениях, а не фактической классификации.
Начните с нижнего левого результата и преобразуйте эту легенду в рисунок. Отредактируйте текст, чтобы получить желаемые диапазоны. Я заметил, что все ваши другие изображения имеют диапазон 10 единиц, но этот делает 20, и он перекрывается. Например, три изображения имеют от -49,99 до -40,00, но в нижнем левом углу - от -49,99 до -60,00, а следующий класс - от -59,99 до -70,00. Изображения также имеют противоположные диапазоны - то есть три являются нижним значением слева, в то время как нижний левый угол является нижним значением справа (для меня это выглядит намного более естественно, увеличивая числа, если не значения слева направо). Возможно, эти проблемы необходимо решить в первую очередь, чтобы сэкономить время, а не просто ручное редактирование текста.
Как только у вас есть легенда с диапазонами и цветовой шкалой, которая вам нравится, вы можете вернуться к своим первым двум слоям (которые уже классифицированы правильно) и вручную отредактировать цветовой патч каждого диапазона, чтобы он соответствовал цвету, который вы выбрали для диапазона в легенде. , Так как два слоя не будут отображать свои собственные легенды, не имеет значения, что в одном из них диапазон на самом деле составляет от -89,99 до -80,00, а в другом - от -81,64 до -80,00, потому что они оба будут одного цвета. ,
Обратите внимание, однако, что это будет означать, что оба набора данных имеют одинаковый диапазон, который они не имеют. На самом деле, похоже, что будут две цветовые заплатки, которые используются только на одной карте каждая (самая высокая и самая низкая). Возможно, вы захотите поставить примечание на каждой карте, которая дает их абсолютный диапазон данных. Я бы также использовал «to» вместо «-» между диапазонами, потому что с отрицательными значениями это немного сбивает с толку.
Альтернативное решение:
Насколько я знаю и могу найти доказательства, у вас должен быть класс, который начинается с вашего минимального значения. Вы можете вручную добавить классы (даже пустые) выше или ниже диапазона данных, но один класс должен начинаться с минимального значения.
Итак, установите символику, используя растр, который содержит самое низкое / минимальное значение среди всех растров. Получите эти символы. Затем вы можете отредактировать метку класса, чтобы сказать, что вы хотите. Поэтому, если ваше самое низкое значение было 0,4, вы все равно можете изменить метку на 0.
Как только вы это сделаете и настроите с цветовой шкалой, которая вам нравится, сохраните лир-файл символов. После этого вы сможете открывать другие растры и применять те же символы. Поскольку все другие растры будут иметь значения, которые выше, они должны классифицироваться правильно, и только минимальное значение само возрастет (или, возможно, этот класс будет отброшен, если в него ничего не попадет). Который снова вы можете изменить метку класса на пол класса вместо фактического значения, если это не переносится с символикой.
источник
Более простое, но и более грязное решение, которое сработало для меня. Не забудьте создать резервную копию ваших исходных данных.
источник
Я полагаю, что это касается легенды, а не растров. Если речь идет о растрах, не обращайте внимания на мое предложение. Я обычно использую это:
Надеюсь, это поможет, FP
источник
Я сделал следующий обходной путь. Я создал собственные разрывы классов в XML-документе и загрузил их в классифицированную символику обоих слоев.
Загрузить разрывы классов XML: в том же меню, где вы сохранили шаблон (см. 1), нажмите «загрузить разрывы классов»
источник
Альтернативный способ - объединить все значения из каждого слоя в один слой. Таким образом, вы получите минимальное и максимальное значения на одном слое.
Иллюстрация:
1. объедините значения всех слоев в один столбец (назовем его All_Vals) в листе Excel
рядом со столбцом All_Vals добавьте два новых столбца с именами X и Y и заполните их нулями.
В arcmap добавьте таблицу Excel в виде таблицы и используйте ее для создания класса точечных объектов с помощью команды / инструмента display xy data, затем экспортируйте слой событий в шейп-файл (назовем его NB_Point) и добавьте его во фрейм данных.
4 Преобразуйте файл формы NB_Point во много типов классов объектов ваших слоев, например, если тип вашего слоя объектов является полигональным, используйте инструмент буфера для создания класса объектов полигонов из файла форм NB_Point (назовем его NB_polygon).
Надеюсь, что это помогает и извините за любые опечатки.
источник