Преобразование MYSQL Polygon в текст в PHP

Преобразование MySQL POINT в текст в PHP

Я нашел этот вопрос и ответ, и он решил мои проблемы. Но я не нашел решения для полигонов.

Есть ли у кого-нибудь решение конвертировать blob / polygon в текст, похожий на пример?

Если вы используете ST_NumGeometries (от https://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.html#function_st-numgeometries ), он должен дать вам количество очков, а затем вы можете использовать цикл и ST_GeometryN для извлечения каждой отдельной точки. Это все равно нужно будет декодировать, как и вы.

Вы можете преобразовать многоугольник обратно в текст (AsText), а затем проанализировать данные там.

Как вы знаете, MySQl (и MariDB) хранит данные геометрии следующим образом:

MySQL сохраняет значения геометрии с использованием 4 байтов, чтобы указать SRID, за которым следует представление WKB значения. Описание WKB-формата см. В разделе «Известный двоичный (WKB) формат).

Дополнительную информацию см. В документах MySQL .

Используя GeoPHP, вы можете конвертировать любые данные Geo (из моего MySQL) следующим образом:

$data = unpack("lsrid/H*wkb", $val); $wkb_reader = new WKB(); $geometry = $wkb_reader->read($data['wkb'], TRUE); $wkt_writer = new WKT(); $wkt = $wkt_writer->write($geometry); return $wkt; 

Где $ val – значение столбца из таблицы MySQL.

Первая строка распаковывает данные на две части:

1- SRID: первые 4 байта 2- WKB: другие как hex strig

и преобразуйте шестнадцатеричную строку WKB в WKT с помощью GeoPHP.