Jeden do wielu łączy klasę elementów ze stołem


10

Korzystam z ArcMap 10.2.2 z licencją Advanced. Użyłem ArcMap do innych podstawowych analiz, ale jestem dość nowy w programie i mam tylko podstawowe umiejętności kodowania, bez doświadczenia SQL poza bardzo podstawowymi zapytaniami przy użyciu konstruktorów kodu SQL w ArcMap.

Mam wielokąty zasięgu geograficznego gatunku i mam tabelę z listą patogenów / chorób przenoszonych przez te gatunki. Niektóre gatunki niosą wiele patogenów. W idealnym świecie dołączyłbym wielokąty zakresów do tabeli gatunków + patogenów i zachowałem dane wielokąta / przestrzenne, ale nie wydaje się, aby istniało do tego narzędzie GIS (zamierzam później liczą nakładające się patogeny, dlatego ważne jest, aby każda kombinacja gatunków i patogenów miała swoją własną cechę, a nie jedną cechę, która zawiera informacje o wielu patogenach). Oto jak wyglądają moje dane (nr 1 i nr 2, nr 3 na później):

Tabela atrybutów dla funkcji przestrzennych:

tabela atrybutów dla obiektów przestrzennych

Tabela bez danych przestrzennych:

tabela bez danych przestrzennych

(Należy pamiętać, że nie są to rzeczywiste dane, a kombinacje patogen-gatunek mogą nie być rzeczywiste. W rzeczywistości mam 115 wielokątów i 519 wierszy tabeli. Gatunki przenoszą od 1 do 40 patogenów, a zatem gatunki mają od 1 do 40 wierszy w mój stół)

Jako dodatkowy bonus, ze względu na przyszłe analizy, które muszę wykonać, idealnie chciałbym móc wykonać to połączenie jeden do wielu, tak że mógłbym zachować dodatkową kolumnę danych z tabeli (patrz poniżej przykład jak to może wyglądać). Jest to jednak mniej ważne, ponieważ jeśli mogę wymyślić, jak wykonać łączenie, mogę po prostu powtórzyć analizę.

tabela bez danych przestrzennych, z dodatkowym polem

Znalazłem kilka rozwiązań tego problemu, ale nie działały one dla mnie z powodów wymienionych poniżej:

Rozwiązanie 1: Blog Davida Aalbersa - jestem zbyt początkującym, aby wymyślić sposób edycji nowszego skryptu i zaimportować go do ArcMap. Wypróbowałem starszy skrypt, który wygenerował masę pustych wielokątów o nazwie test, test_1, test_1_1, test_1_1_1 itd.

Rozwiązanie 2: Dołączanie jeden do wielu - Próbowałem użyć narzędzia Utwórz tabelę zapytań (i nie mam wiedzy SQL, chociaż korzystałem z konstruktora wyrażeń) i otrzymałem ERROR 000383: Problem z tabelą, nie mogę znaleźć obszaru roboczego i Nie można wykonać (MakeQueryTable). Wszystkie moje pliki znajdują się w tym samym folderze, ale nie znajdują się w geobazie.


1
Spraw, by tabela zapytań działała tylko z bazą danych
FelixIP

1
Stwórz tabelę zapytań wymaga wszystkich danych w tym samym fgdb.
klewis

Odpowiedzi:


22

Aby pomnożyć funkcje, zrób to (dostępne dla osób posiadających ArcGIS 10.1 lub nowszy).

  1. Umieść funkcje i tabelę w tej samej geobazie pliku (aby to zadziałało, musisz przekonwertować pliki Shapefiles / Excel / DBF na geobazę).
  2. Upewnij się, że twoje wielokąty mają unikalne pole ID, które zostanie zachowane (możesz utworzyć Długie pole i obliczyć w nim ObjectID, aby wartość ObjectID nie została utracona).
  3. Wykonaj standardowe połączenie tabeli (atrybuty, brak danych przestrzennych) z elementami (dane przestrzenne) w dopasowanym polu. Pamiętaj, że tabela atrybutów funkcji (dane przestrzenne) będzie miała tę samą liczbę funkcji, co wcześniej, ale nie martw się tym, wszystkie pojawią się w następnym kroku.
  4. Wyeksportuj obiekty do tej samej geobazy jak nowa klasa obiektów (kliknij warstwę prawym przyciskiem myszy ze spisu treści i wybierz eksport). Należy zauważyć, że liczba funkcji w tabeli atrybutów eksportowanych obiektów ma teraz odpowiednią liczbę funkcji, taką samą jak oryginalna tabela (z atrybutami, bez danych przestrzennych) lub, w przypadku łączenia wielu do wielu, kompletny zestaw funkcji dla wszystkich kombinacji funkcji i powiązanych rekordów.

Funkcje zostaną pomnożone w nowej klasie obiektów, w której każda funkcja będzie obecna (nawet jeśli nie miała dopasowania w tabeli) i gdzie wcześniej było dopasowanie 1: M, funkcje zostaną pomnożone, aby uzyskać 1: 1 dopasowanie każdej funkcji do wszystkich pozycji w tabeli. Pole Unikatowy identyfikator utworzone w kroku 2 pozwoli ci powiązać pomnożone wielokąty z oryginalnym pojedynczym zestawem wielokątów. Dzięki nowej klasie obiektów zwielokrotnionych możesz dokonywać selekcji na polach tabeli, podsumowaniach, sprzężeniach przestrzennych itp.

Jeśli chcesz wygenerować unikalną wartość identyfikatora, która reprezentuje każdą unikalną kombinację gatunków i chorób, możesz użyć wersji 10.2 narzędzia opisanego w tym poście na blogu . Posiadanie tego typu klucza pozwala używać go do wykonywania standardowych sprzężeń z tabelami podsumowań i statystykami opartymi na relacji z wieloma polami, jako substytut tworzenia rzeczywistej relacji z wieloma polami przy użyciu zestawu Utwórz tabelę zapytań.

Oto dobre referencje od esri: https://support.esri.com/en/technical-article/000001228


Działa idealnie po wyeksportowaniu do geobazy!
MooseGirl

1
Zmodyfikowałem krok 4, aby stwierdzić, że eksport powinien dotyczyć nowej klasy obiektów w tej samej geobazie, co oryginalne dane. Postępowanie zgodnie z tą procedurą powinno zawsze działać, chociaż możliwe jest, że dopuszczone mogą być również pewne odmiany miejsca przechowywania danych źródłowych i wyjściowych.
Richard Fairhurst,

Było to jasne wcześniej (chociaż przyszli zdesperowani ludzie z pewnością docenią to przeliterowanie), ale pierwotnie nie miałem odpowiedniego połączenia z folderem geobazy (lub czymś innym), ponieważ nie pozwoliłoby mi to wyeksportować do geobazy. Uruchomiłem ponownie i działało dobrze.
MooseGirl

1
Dodałem, że połączone funkcje nie będą miały odpowiedniej liczby atrybutów, a eksportowane funkcje będą miały. Bardzo mnie to frustrowało, kiedy próbowałem tego, dopóki nie wykonałem wszystkich kroków.
nittyjee

Brzmi to tak, jakby brakowało „nie” w not
punkcie

-2

Zapytanie SQL:

SELECT spp, disease, type
FROM table1, table2
WHERE table1.bimonial = table2.spp;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.