У меня есть точки, представляющие образцы мест. Часто в одном и том же месте будут взяты несколько образцов: несколько точек с одним и тем же местоположением, но с разными идентификаторами образцов и другими атрибутами. Я хотел бы пометить все точки, которые совмещены с одной меткой, со сложенным текстом, перечисляющим все образцы идентификаторов всех точек в этом месте.
Возможно ли это в ArcGIS с использованием обычного механизма маркировки или Maplex? Я знаю, что мог бы обойти это, создав новый слой со всеми образцами идентификаторов для каждого местоположения в одном значении атрибута, но я бы хотел избежать создания новых данных только для маркировки.
В основном я хочу пойти от этого:
К этому (для самой верхней точки):
Не делая ручного редактирования надписей.
Ответы:
Один из способов сделать это - клонировать слой, используя запросы определений и пометить их отдельно, используя только верхнюю левую позицию метки для первого слоя и нижнюю левую для второго.
Добавьте целое число типа THEFIELD к слою и заполните его, используя выражение ниже:
Позвоните по:
Создайте копию слоя в таблице содержания, примените определение запроса THEFIELD = 1.
Примените запрос определения THEFIELD = 2 для исходного слоя.
Применить другое фиксированное размещение метки
ОБНОВЛЕНИЕ на основе комментариев к оригинальному решению:
Добавьте поле COORD и заполните его, используя
Суммируйте это поле, используя первый и последний для метки. Присоедините эту таблицу к оригиналу, используя поле COORD. Выберите записи, где первый <> последний и объединить первый и последний ярлык в новом поле, используя
Используйте Count_COORD и THEFIELD, чтобы определить 2 «разных слоя» и поля для их пометки:
Обновление № 2, вдохновленное решением @Hornbydd:
ОБНОВЛЕНИЕ Ноябрь 2016, надеюсь, продлится.
Ниже выражение проверено на 2000 дубликатов, работает как шарм:
источник
Ниже приведено частичное решение.
Это входит в выражение ярлыка Advance. Это не очень эффективно, поэтому я спрашиваю о количестве точек в вашем наборе данных. Таким образом, для каждой строки, которая помечена, создается 2 словаря,
d
ключом которых является XY, а значением - текст, аd2
также objectID и XY. Используя эту комбинацию словарей, он может возвращать одну метку, которая является конкатенацией с символами новой строки, в моем примере это конкатенация TARGET_FID. «sj» - это имя слоя в оглавлении.Почему это частичное решение заключается в том, что это делается для каждой точки, я не смог придумать, как бы вы отключили все остальные сложенные точки. Именно поэтому я думаю, что окончательным решением является некий питон, который создает новый слой из отдельных точек с одной меткой, созданной из стека точек.
Ниже приведен вывод 3 сложенных точек, поскольку вы можете видеть, что метка создается для каждой точки, поскольку все они существуют в одном и том же месте.
источник