SQL SERVER - Spatial data   zodpovězená otázka

SQL

Je možné niejak jednoducho previesť súradnice X,Y uložené v tabulke v samostatných stlpcoch na geometrické ( geografické )data

príklad:

objekt má súradnice X1,Y1

X2,Y2

X3,Y3

X4,Y4

a potrebujem ich dostať do tvaru ...POLYGON((X1 Y1,X2 Y2,X3 Y3,X4 Y4)

potrebujem previesť rádovo 10 000 súradníc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Seskládáte to do sebe jedním selectem:

declare @poly varchar(max) = 'POLYGON(('
select @poly = COALESCE(@poly + cast(X as varchar(50)) + ' ' + cast(Y as varchar(50)) + ',', '') from Tabulka 
set @poly = SUBSTRING(@poly, 0 , len(@poly)) + ')'
select @poly

A výsledek překonvertuje do požadovaného formátu například přes geometry::Parse(@pole).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

zabudol som uviesť že tých objektov je asi 1000,každý má svoje ID a rôzny počet súradníc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ďakujem za radu,trochu som to upravil,

neviem či je to " košer ", ale robí to čo potrebujem.

declare @MAXID decimal(18,0)
select @MAXID = max(ID) from SURADNICE group by ID order by ID

declare @VAR int
set @VAR = 1

WHILE @VAR <= @MAXID

BEGIN
declare @ID decimal(18,0)
declare @POLY varchar(max) = 'POLYGON(('
select @ID=ID, @POLY = (@POLY + cast(Y as varchar(50)) + ' ' + cast(X as varchar(50)) + ',') from SURADNICE where ID = @VAR
set @POLY = SUBSTRING(@poly, 0 , len(@poly)) + '))'
select @ID, @POLY
 
set @VAR += 1
END

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback