To pytanie brzmi tak zbędnie ...
W każdym razie poproszono mnie o zbadanie zastosowań SQL w ArcGIS. Używamy SDE DB do wszystkich magazynów po stronie serwera oraz zarządzania DB / edycji na dużą skalę. Próbuję jednak dokładniej zbadać, w jaki sposób SQL jest zintegrowany z narzędziami ArcGIS. W podręczniku SQL Query Reference Guide pomocy ArcGIS 10 znajduje się uwaga, która wyraźnie stwierdza, że składnia SQL nie działa podczas korzystania z narzędzia Field Calculator. Uważam to za bardzo rozczarowujące, ponieważ wydaje się bardzo przydatne, aby móc pobierać i przekształcać informacje bezpośrednio z samej bazy danych podczas obliczania wartości pól.
Jakie są największe ograniczenia i pułapki, na które można się natknąć, próbując korzystać z SQL w ArcGIS? Które narzędzia widzą najlepszą funkcjonalność po zintegrowaniu z SQL?
Jeśli potrzebny jest przykład, aby uczynić to jaśniejszym pytaniem, próbuję śledzić liczbę punktów zainteresowania, które są określonego typu w danym regionie. Każdy punkt ma atrybut opisujący jego typ i region. Moje obecne rozwiązanie obejmuje intensywne użycie kursorów do zliczania i pobierania danych, ale przełożony wskazał, że proste zapytanie SQL może zrobić wszystko to i więcej. Niestety wydaje się, że funkcjonalność nie jest w tym celu dostępna.
Albo to jest?
Odpowiedzi:
Jeśli chcesz używać Pythona, spójrz na polecenie ArcSDESQLExecute . Umożliwi to wykonanie dowolnego SQL, ale musi być podłączony przez SDE. Jeśli wynikiem zapytania jest zestaw wierszy, atrybuty zostaną zwrócone jako lista list w języku Python. W przeciwnym razie zwróci True, jeśli SQL zostanie wykonany pomyślnie, lub None, jeśli nie. Zobacz także: Wykonywanie SQL przy użyciu połączenia ArcSDE
źródło
Jeśli piszesz niestandardowe obiekty ArcObject, możesz wykonać dowolny kod SQL w obszarze roboczym SDE za pomocą metody ExecuteSQL . Ta metoda jest ograniczona do zapytań, które nie zwracają zestawów wyników, takich jak INSERT, UPDATE lub niektóre procedury składowane.
Jeśli pracujesz za pomocą interfejsu ArcMap, twoje opcje są nieco bardziej ograniczone. Powodem, dla którego nie można używać SQL za pomocą pola Oblicz, jest to, że wyrażenie to w rzeczywistości VBScript i / lub Python. Możesz użyć VBScript lub Python, aby wykonać dowolne wyrażenie SQL i pobrać wartości z wynikowego kursora, ale nie poleciłbym tego.
Alternatywnie możesz użyć odpowiedzi Regana i utworzyć warstwę zapytań. W przypadku danych tylko do odczytu jest to najlepsze podejście. Jeśli potrzebujesz zaktualizować dane, jest to nieco bardziej skomplikowane. Musisz utworzyć warstwę zapytania z „nowymi” wartościami, wykonać połączenie z istniejącą tabelą, a następnie użyć pól obliczeniowych. Można to połączyć z ExecuteSQL, aby wykonywać złożone aktualizacje, a następnie przeglądać wyniki (trochę niezgrabne).
Ostatnią alternatywą jest bezpośrednie wykonanie SQL na tabelach ArcSDE.
źródło
Powinieneś sprawdzić warstwy zapytań w ArcMap 10
źródło
W zależności od używanego RDBMS możesz korzystać z bibliotek SQL poza ArcObjects lub Arcpy, o ile nie zależy od odzyskania danych funkcji. Wiele zapytań w bazie danych SQL Server, których używam na co dzień, nie ma charakteru przestrzennego, więc użyję klas System.Data w .NET lub biblioteki Python pymssql w aplikacjach Python. Jeśli potrzebujesz użycia danych przestrzennych, Warstwy zapytań są najlepszym wyborem. Jedynym zastrzeżeniem dotyczącym warstw zapytań jest to, że działają one tylko z danymi przechowywanymi przy użyciu typów danych przestrzennych (nie jest to standardowy typ SDEBINARY).
źródło