Spec-Zone .ru
спецификации, руководства, описания, API
|
После того, как Вы создали пространственные столбцы, можно заполнить их с пространственными данными.
Значения должны быть сохранены во внутреннем формате геометрии, но можно преобразовать их в тот формат или из Известного текста (WKT) или из Известного Двоичного файла (WKB) формат. Следующие примеры демонстрируют, как вставить значения геометрии в таблицу, преобразовывая значения WKT во внутренний формат геометрии:
Следующие примеры вставляют более сложные конфигурации в таблицу:
SET @g = 'LINESTRING(0 0,1 1,2 2)';INSERT INTO geom VALUES (GeomFromText(@g));SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';INSERT INTO geom VALUES (GeomFromText(@g));SET @g ='GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';INSERT INTO geom VALUES (GeomFromText(@g));
Предыдущие примеры все использование GeomFromText()
создавать стоимость геометрии. Можно также использовать
специфичные для типа функции:
SET @g = 'POINT(1 1)';INSERT INTO geom VALUES (PointFromText(@g));SET @g = 'LINESTRING(0 0,1 1,2 2)';INSERT INTO geom VALUES (LineStringFromText(@g));SET @g = 'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))';INSERT INTO geom VALUES (PolygonFromText(@g));SET @g ='GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))';INSERT INTO geom VALUES (GeomCollFromText(@g));
Отметьте, что, если программа клиентского приложения хочет использовать представления WKB значений геометрии, это ответственно за отправку, правильно сформировал WKB в запросах к серверу. Однако, есть несколько способов удовлетворить это требование. Например:
Вставка a POINT(1 1)
значение с шестнадцатеричным
литеральным синтаксисом:
mysql>INSERT INTO geom VALUES
->(GeomFromWKB(0x0101000000000000000000F03F000000000000F03F));
Приложение ODBC может отправить представление WKB, связывая это с заполнителем,
используя параметр BLOB
введите:
INSERT INTO geom VALUES (GeomFromWKB(?))
Другие интерфейсы программирования могут поддерживать подобный механизм заполнителя.
В программе C можно выйти из использования двоичного значения mysql_real_escape_string()
и включайте результат в строку запроса,
которая отправляется серверу. См. Раздел 21.8.7.54,"mysql_real_escape_string()
".