Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Sql Server 2008 географски ограничения за размера на LineString

Не съм чувал за никакви ограничения на размера на LINESTRING (със сигурност не толкова кратък, колкото 567 точки).

Току-що опитах пример

DECLARE @geom GEOGRAPHY
SET @geom = GEOGRAPHY::STGeomFromText(
  'LINESTRING (142.98873903132778 -11.006193013241768
   , 142.9891970000001 -11.005916999999954
   -- SNIP 1,119 points
   , 142.04362479801711 -11.629451936538608 )', 4326)
SELECT @geom, @geom.STNumPoints()

което работи добре (създава LINESTRING и отчита 1122 точки).

Вашият пример се проваля с НЯКАКВИ 567 точки - или само с определен набор от точки (можете ли да ги споделите с нас?). Предполагам, че се чудя дали вашата 568-ма точка прави вашия пример GEOGRAPHY по-голям от полукълбо? Например, ако променя примера си, като добавя друга точка (0,0), което принуждава ГЕОГРАФИЯТА да бъде твърде голяма:

DECLARE @geom GEOGRAPHY
SET @geom = GEOGRAPHY::STGeomFromText(
  'LINESTRING (142.98873903132778 -11.006193013241768
   , 142.9891970000001 -11.005916999999954
   -- SNIP 1,119 points
   , 142.04362479801711 -11.629451936538608
   , 0 0 )', 4326)         -- ADDED ANOTHER POINT !
SELECT @geom, @geom.STNumPoints()

Получавам ArgumentException 24205:Посоченият вход не представлява валиден географски екземпляр, защото надхвърля едно полукълбо. Всеки географски екземпляр трябва да се побере в едно полукълбо. Честа причина за тази грешка е, че многоъгълник има грешна ориентация на пръстена. което очевидно не е точно същата грешка като вас - но все пак реших да го повдигна [Преминете към АКТУАЛИЗАЦИЯТА в края за по-добра идея]

Вторият ми въпрос към вас е:работи ли с типа данни GEOMETRY? напр. ако променя моя пример за „счупване“ по-горе, за да използвам GEOMETRY, тогава той работи добре:

DECLARE @geom GEOMETRY    -- using GEOMETRY type instead
SET @geom = GEOMETRY::STGeomFromText(
  'LINESTRING (142.98873903132778 -11.006193013241768
   , 142.9891970000001 -11.005916999999954
   -- SNIP 1,119 points
   , 142.04362479801711 -11.629451936538608
   , 0 0 )', 4326)         -- THIS POINT BREAKS GEOGRAPHY but works now!
SELECT @geom, @geom.STNumPoints()

Ако можете да публикувате малко повече подробности за вашия конкретен проблем, това може да подскаже основния проблем. Можете също така да добавите дали въвеждате точките в SQL Management Studio или чрез код (сглобяване на типове данни C# и SQL ли е)? Какъв е пълният текст на съобщението за грешка, което получавате (ако има повече от цитираното по-горе - вижте моята грешка).

Но краткият отговор е „Не мисля, че има ограничение от 567 точки“.

АКТУАЛИЗАЦИЯ: Публикацията на Ed съдържа точната грешка, която получавате (System.ArgumentException:24200) - така че ако вместо това можете да накарате данните си да работят в GEOMETRY, това може да си струва да опитате:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извличане на числа от текст в SQL Server

  2. SQL Server 2008 - При тригер за вмъкване/актуализиране, който копира стойности в друга таблица?

  3. Как да инспектирам променливи на таблици и временни таблици от сесия за отстраняване на грешки в SSMS 2008?

  4. Как да увеличите размера на файла с данни в SQL Server (T-SQL)

  5. SQL Server PDF Full-Text Search не работи на FileStream PDF файл