В документе ST_DWithin сказано, что третий параметр (расстояние) указан в метрах.Но когда я выполняю какой-то запрос, кажется, что он принимает третий параметр как «градус»?
Вот моя упрощенная структура таблицы:
> \d+ theuser;
Table "public.theuser"
Column | Type | Modifiers | Storage | Description
----------+------------------------+-----------+----------+-------------
id | bigint | not null | plain |
point | geometry | | main |
Indexes:
"theuser_pkey" PRIMARY KEY, btree (id)
"point_index" gist (point)
Referenced by:
...
Has OIDs: no
Все точки сохраняются с SRID = 4326.
И это запрос:
> select * from theuser where ST_DWithin(point , ST_GeomFromText('POINT(120.9982 24.788)',4326) , 100 );
Третий параметр (100) принимает значение «градус», поэтому он возвращает все данные, мне нужно сузить до 0,001, чтобы найти поблизостибаллы.
Но как мне напрямую передать метры в качестве третьего параметра (я не хочу выполнять преобразование метра / градуса)?Что не так с моим запросом?почему postgreSQL не воспринимает это как метры, как говорится в документе?
Среды:
> select version();
version
-----------------------------------------------------------------------------------------------------------
PostgreSQL 8.4.9 on i486-pc-linux-gnu, compiled by GCC gcc-4.4.real (Ubuntu 4.4.3-4ubuntu5) 4.4.3, 32-bit
> SELECT postgis_lib_version();
postgis_lib_version
---------------------
1.4.0
Если именно SRID вызывает эту проблему, то какой SRID напрямую использует «метр» какЕдиница ?(Я попытался преобразовать в SRID = 2163, но все еще в степени) Спасибо.