2013-03-16 18 views
5

Sto cercando di inserire le coordinate geografiche di un poligono nel mio database MySQL. Ho un campo chiamato poligono di tipo poligono e ho provato a fare funzionare tutte queste domande, ma continuo ad ottenere gli errori di sintassi SQL:Inserimento di coordinate in MySQL - PolyFromText Errore di sintassi SQL/restituzione di null

SET @g = 'POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327))'; 
INSERT INTO 'zones' ('polygon') VALUES (PolyFromText(@g)); 

INSERT INTO 'zones' ('polygon') VALUES (PolyFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327))')); 

INSERT INTO 'zones' ('polygon') VALUES (PolyFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327))', 0)); 

L'ultima query è stato generato utilizzando phpmyadmins proprio strumenti geo spaziali e restituire "Column 'poligono' non può essere nullo". Qualsiasi aiuto è apprezzato!

+0

ho provato PolygonFromText, PolyFromText e GeomFromText - nessuno di loro lavoro. – Yev

risposta

25

Il motivo è perché null che esce dall'ultimo punto non è uguale al primo punto, è una condizione per soddisfare lo standard WKT di OSGeo, in alcune implementazioni ciò è consentito, ma mysql è rigoroso con esso, in SQL Server la documentazione spiega meglio le condizioni.

vedono questo

SELECT Dimension(GeomFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327,-74.13591384887695 40.93750722242824)))')); 

doc di mysql

http://dev.mysql.com/doc/refman/5.0/en/gis-class-polygon.html

doc di SQLServer

http://msdn.microsoft.com/en-us/library/bb964739(v=sql.105).aspx

+0

Grazie !! Ho ripetuto il punto alla fine e ha funzionato! – Yev

+1

Sei fantastico, m8! – nurgasemetey