сори, опечатка postgisАвтор оригинала: Wicked
1) что такое postges?
2) в GoogleMapAPI используются широта и долгота, так что нужно стремиться к этому.
Так что поможещь мнеАвтор оригинала: Wicked
Pavel6
я уже успел заапдейтить свой ответ![]()
$wkb = "01040000000100000001010000002A3A92CBA8C81341AC1C5A90E4555541";
$wkb = pack("H*", $wkb);
$geometry = unpack("corder/Ltype/Lnumber/corder2/Ltype2/dx/dy", $wkb);
print_r($geometry);
Array
(
[order] => 1
[type] => 4
[number] => 1
[order2] => 1
[type2] => 1
[x] => 324138.1988
[y] => 5592978.2555
)
Я перевел с помощью POSTGIS, он встраивается в запрос,Автор оригинала: Wicked
Я попробовал распаковать эту строку в соответствии с описанием стандарта WKB.
естественно... потому что в google maps совершенно другая система координат - широта и долгота.но эти координаты не отображаются в GoogleMap
А можно гдето почитать за proj в phpАвтор оригинала: YRusinov
Надо преобразовать твои координаты с помощью функции POSTGIS transform в любую проекцию, для которой поле proj4text в таблице spatial_ref_sys содержит нечто подобное этому
+proj=longlat
А потом вычленять по точкам.
Спасибо за помощь, но ничего невыходитАвтор оригинала: YRusinov
Скорее всего нет.
Вот твой алгоритм: сначала делаешь SELECT srid FROM spatial_ref_sys WHERE proj4text ilike '%+proj=longlat%'; Потом select astext (transform (POINT (x, y), <твой srid>)); и получаешь точку в координатах long/lat.
$r = pg_query($dbconn,"SELECT srid FROM spatial_ref_sys WHERE proj4text ilike '%+proj=longlat%'");
while($num = pg_fetch_array($r)){
$c = pg_query("select astext (transform (POINT (x, y), $num[srid] ))");
}
невыходит, а у тебя примера нету?Автор оригинала: YRusinov
смотрим документацию к функции transform http://postgis.refractions.net/docs/ch06.html,
должен быть примерно следующий код.
while (...)
{
...
$coords = pg_query ($dbconn, "SELECT geo FROM ojb_exp;");
$coordarr = pg_fetch_array($coords);
$x = $coordarr [0];
$y = $coordarr [1];
$c = pg_query ($dbconn, "SELECT astext(transform (POINT ($x, $y), $num[0]))");
...
}
Выдает ошибку Warning: pg_query(): Query failed: ERROR: Cannot find input SRID (300001) in spatial_ref_sys in z:\home\sm\www\index2.php on line 18Автор оригинала: YRusinov
И ещё тут такое дело, что не все проекции могут быть преобразованы друг в друга. Что именно не выходит ? Вот пример
SELECT astext (transform (GeomFromText ('POINT (7313763.5000000000000000 6035576.5000000000000000)', 300001), 300006));
в результате дает POINT(5973099.05278491 14061284.0808775), который можно пропарсить на пхп.
-~{}~ 04.10.06 17:40:
SELECT astext (transform (GeomFromText ('POINT (7313763.5000000000000000 6035576.5000000000000000)', 300001), 4024)); -> POINT(36.1295709069521 54.4110818216995), для проекции 300001 координаты в метрах, для проекции 4024 в градусах long/lat, эллипсоид Крассовского.