Как да обединявате слоеве с помощта на геометрия или атрибути
Обобщение
В ГИС, обединенията са мощен механизъм за комбиниране на информация от различни слоеве въз основа на общ атрибут или пространствена връзка. Обединенията ви позволяват да обедините атрибутни данни от един слой (изходен слой) с друг слой (целеви слой), използвайки общо поле или пространствено местоположение. Първото е свързване на данни по ключ (атрибут в таблицата). Използвайки общо поле, като уникален ключ, можете да свържете записи в една таблица с записи в друга таблица. Вторият подход е свързване на данни по местоположение (пространствено). Поддържаме и двата подхода и ви предлагаме възможността да ги използвате в зависимост от вашите нужди.
Представете си, че сте получили данни, описващи процентната промяна в населението за различни райони, и искате да генерирате няколко карти на растежа на населението въз основа на тази информация. Докато данните ви за населението се съхраняват в таблица във вашата база данни и споделят общо поле с вашия слой, можете да обедините тези данни с вашите географски обекти и да използвате допълнителни полета за етикетиране, категоризиране, заявки или анализиране на слоеви обекти.
Обикновено извършвате обединения на данни въз основа на стойност на поле, която съществува и в двете таблици. Имената на полетата не трябва непременно да съвпадат, но типовете данни трябва да са еднакви - числа с числа, низове с низове и т.н. Можете да изпълните обединението на данни, използвайки инструмента за геообработка “Add Join”. Когато обединявате атрибути, обединените полета се добавят динамично към съществуващата таблица. Свойствата на полетата като псевдоними, видимост и форматиране на числата се запазват при добавяне или премахване на обединението.
Възможности за обединяване по ключово поле
- Този подход ви позволява да свързвате записи от различни таблици въз основа на общо ключово поле. Можете да посочите ключовото поле, което ще се използва за сравнение, за да установите връзката между записите. Това е особено полезно, когато трябва да обедините данни въз основа на идентификатор или друг уникален атрибут.
Определяне на метода за сравняване на данни въз основа на ключовото поле:
- Можете да дефинирате различни методи за сравнение за ключовото поле при обединяване на данни. Например, можете да изберете да имате точно съвпадение, да сравните въз основа на шаблон или в рамките на диапазон от стойности. Това позволява по-прецизно определяне на връзките между записите и ви дава контрол върху процеса на обединяване на данни.
Определяне на списък с имена на атрибути, които трябва да бъдат обединени:
- Когато обединявате данни, можете да посочите конкретни атрибути, които трябва да бъдат обединени. Това ви позволява да избирате само необходимите атрибути за обединяване и да управлявате структурата на получения резултат.
Възможности за обединяване с помощта на геометрия
- Този подход ви позволява да свързвате данни въз основа на тяхното пространствено местоположение. Можете да дефинирате радиус на търсене, в рамките на който ще бъдат потърсени най-близките геометрични обекти за обединяване. Това е полезно, когато трябва да обедините данни въз основа на тяхната географска позиция.
Контрол на радиуса на търсене за намиране на най-близките геометрични обекти:
- Можете да контролирате радиуса на търсене при обединяване на данни въз основа на местоположението. Чрез посочване на стойност на радиус, определяте разстоянието в рамките на което ще бъдат потърсени най-близките обекти за обединяване. Това ви дава контрол върху кои обекти ще участват в процеса на обединяване на данни въз основа на тяхната пространствена връзка.
Демо проект
За да разберете по-добре функционалността на нашата библиотека, нека разгледаме пример за нейната употреба. Този код илюстрира как да обедините векторни слоеве по атрибути или геометрия.
Предоставеният код се състои от два метода, JoinByIndex() и JoinByCoords(), които демонстрират операции за обединяване на данни с помощта на клас LayerConstructor.
В метода JoinByIndex():
-
Създават се списъци с геометрии със свързани атрибути.
-
Инициализира се обект LayerConstructor.
-
Методът създава векторно ниво и геометрично ниво, използвайки предоставените геометрии.
-
Геометричното ниво се обединява въз основа на уникален идентификатор (“Id”), използвайки метода JoinLayersById().
-
Полученото обединено векторно ниво се връща.
В метода JoinByCoords():
-
Създават се списъци с геометрии със свързани атрибути.
-
Инициализира се обект LayerConstructor.
-
Създават се геометрични слоеве, използвайки предоставените геометрии.
-
Геометричните слоеве се обединяват въз основа на съвпадащи координати, използвайки метода JoinLayersByCoords().
-
Полученото обединено векторно ниво се връща.
В обобщение, тези методи показват два различни подхода за обединяване на данни: един въз основа на уникален идентификатор и другият въз основа на съвпадащи координати. Класът LayerConstructor улеснява тези операции за обединяване на данни.
Опции за обединяване за индекс
Класът JoinOptions предоставя набор от опции за конфигуриране на обединяването на слоеве. Нека се потопим по-дълбоко във всяка опция:
-
JoinAttributeName: Тази опция ви позволява да посочите името на атрибута от обединения слой, чиято стойност ще бъде използвана в сравнението на условията. Той установява връзката между двата слоя въз основа на този атрибут.
-
TargetAttributeName: С тази опция можете да посочите името на атрибута от основния слой, който ще бъде сравнен с атрибута от обединения слой. Тя помага за определяне на съвпадащите характеристики между слоевете.
-
JoinAttributeNames: Тази опция ви позволява да посочите списък с имена на атрибути, които искате да обедините. Ако този списък е празен или зададен на null, всички атрибути от обединения слой ще бъдат включени в операцията за обединяване. Въпреки това, като изберете конкретни имена на атрибути, можете да контролирате атрибутите, които се обединяват, което може да бъде полезно за оптимизиране на използването на паметта и времето за обработка.
-
ConditionComparer: Тази опция ви позволява да дефинирате персонализирана логика за сравняване на стойности на атрибути между характеристиките на двата слоя. По подразбиране се използва EqualityComparer.Default, който проверява за равенство. Въпреки това, можете да предоставите свой собствен потребителски компаратор, който имплементира IEqualityComparer за по-специализирани изисквания за сравнение.
-
JoinedAttributesPrefix: Тази опция ви позволява да посочите префикс на низ за имената на атрибутите на обединения слой. Стойността по подразбиране е “joined_”, което означава, че обединените атрибути ще бъдат с префикс “joined_” в получения обединен слой. Този префикс помага да се разграничат обединените атрибути от оригиналните атрибути на основния слой.
Класът JoinOptions предоставя гъвкавост и контрол върху различни аспекти на процеса на обединяване на слоеве. Можете да посочите атрибутите за обединяване, да персонализирате логиката за сравнение и да дефинирате префикс за получените обединени атрибути. Тези опции ви позволяват да адаптирате операцията за обединяване според вашите специфични нужди и да постигнете значими прозрения от обединените слоеве.
Опции за обединяване за геометрия
Класът JoinByGeometryOptions представлява опции за обединяване на слоеве въз основа на геометрията. Нека разгледаме функционалността на всяка опция:
-
Radius: Тази опция определя радиуса, в рамките на който ще бъде потърсена обединената геометрия. Тя определя близостта, в рамките на която характеристиките от основния слой ще бъдат съпоставени с характеристиките от обединения слой въз основа на тяхната пространствена връзка.
-
ConditionComparer: Тази опция ви позволява да дефинирате персонализирана логика за сравняване на стойности на атрибути от характеристиките на двата слоя. По подразбиране се използва EqualityComparer.Default, който проверява за равенство. Въпреки това, можете да предоставите свой собствен потребителски компаратор, който имплементира IEqualityComparer за по-специфични изисквания за сравнение.
-
JoinedAttributesPrefix: Тази опция ви позволява да посочите префикс на низ за имената на атрибутите на обединения слой. Стойността по подразбиране е “joined_”, което означава, че обединените атрибути ще бъдат с префикс “joined_” в получения обединен слой. Този префикс помага да се разграничат обединените атрибути от оригиналните атрибути на основния слой.
Класът JoinByGeometryOptions предоставя средства за персонализиране на процеса на обединяване на слоеве въз основа на тяхната пространствена връзка. Чрез посочване на радиус на търсене можете да контролирате степента, в рамките на която геометриите ще бъдат съпоставени. Това позволява фина настройка на операцията за обединяване въз основа на желаната близост между характеристиките. Опцията за предоставяне на потребителски компаратор ви дава гъвкавост при сравняване на стойности на атрибути, а опцията за префиксиране на обединените атрибути помага да се разграничат в получения обединен слой.
Използвайки тези опции, можете да извършвате пространствено осъзнато обединяване на данни и да получите прозрения от обединените слоеве, които са базирани на тяхната пространствена близост и стойности на атрибутите.
Обобщение
Механизмът за обединяване на данни в ГИС позволява комбинирането на геометрични обекти с техните съответни атрибути от различни слоеве. Това осигурява възможността да се анализира и извлече информация въз основа на пространствени и атрибутни връзки в данните. Достъпните опции позволяват персонализиране на процеса на обединяване, за да отговарят на специфични изисквания и нужди от анализ в ГИС данните.
Обединяването на данни улеснява различни задачи, включително:
-
Намиране на обекти, които отговарят на конкретни пространствени критерии, като например идентифициране на всички сгради в радиус от 500 метра от определена точка.
-
Комбиниране на географски данни за създаване на по-изчерпателен и информативен преглед на ситуацията.
-
Анализиране на стойности на атрибути на обекти въз основа на специфични пространствени условия, за да се идентифицират тенденции и модели.
Опциите за обединяване на данни позволяват прецизна конфигурация на процеса на съпоставяне на обекти. Тези опции включват избор на атрибутите за обединяване, дефиниране на персонализирана логика за сравнение на стойности на атрибути и добавяне на префикс към имената на атрибутите на обединените данни. Тези опции осигуряват гъвкавост и адаптивност към процеса на обединяване, отговаряйки на специфични изисквания и цели на анализа на данни в ГИС.
Механизмът за обединяване на данни играе значителна роля в интегрирането и анализирането на географски данни, което води до по-изчерпателно разбиране на пространствената и атрибутна природа на изследваните обекти.