Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Zwraca przybliżenie danego wystąpienia geograficznego wygenerowanego przez uruchomienie algorytmu Douglas-Peucker w wystąpieniu z daną tolerancją.
Ta metoda typu danych geografii obsługuje wystąpienia FullGlobe lub wystąpienia przestrzenne, które są większe niż półkula.
Syntax
.Reduce ( tolerance )
Arguments
| Term | Definition |
|---|---|
| tolerance | Jest wartością typu float. tolerancja to tolerancja danych wejściowych algorytmu Douglas-Peucker. tolerancja musi być liczbą dodatnią. |
Typy zwracane
Typ zwracany programu SQL Server: lokalizacja geograficzna
Typ zwracany CLR: SqlGeography
Remarks
W przypadku typów kolekcji ten algorytm działa niezależnie w każdej lokalizacji geograficznej zawartej w wystąpieniu. Ten algorytm nie modyfikuje wystąpień punktów .
Ta metoda podejmie próbę zachowania punktów końcowych wystąpień LineString , ale może się nie powieść, aby zachować prawidłowy wynik.
Jeśli Reduce() jest wywoływana z wartością ujemną, ta metoda spowoduje wygenerowanie argumentuException. Tolerancje stosowane w Reduce() liczbie muszą być liczbami dodatnimi.
Algorytm Douglas-Peucker działa na każdej krzywej lub pierścieniu w wystąpieniu geografii , usuwając wszystkie punkty z wyjątkiem punktu początkowego i punktu końcowego. Każdy punkt usunięty jest następnie dodawany z powrotem, począwszy od najdalej od punktu wychodzącego, aż do punktu nie jest więcej niż tolerancja od wyniku. Wynik jest następnie prawidłowy, jeśli jest to konieczne, w prawidłowym wyniku jest gwarantowany.
W programie SQL Server 2012 (11.x) ta metoda została rozszerzona do wystąpień FullGlobe .
Ta metoda nie jest dokładna.
Examples
Poniższy przykład tworzy LineString wystąpienie i używa Reduce() go do uproszczenia wystąpienia.
DECLARE @g geography = 'LineString(120 45, 120.1 45.1, 199.9 45.2, 120 46)'
SELECT @g.Reduce(10000).ToString()