проблемы импорта файла формы postgis
Привет, я пытаюсь импортировать файл формы из
Http://www.nyc.gov/html/dcp/html/bytes/bytesarchive.shtml
В базу данных postgis. вышеуказанные файлы создают МУЛЬТИПОЛИГОНЫ при импорте с помощью shp2pgsql.
Тогда я пытаюсь просто определить, если широта/долгота точки, содержащиеся в моем мультиполигоны
Однако мои select'ы не работают, и когда я распечатываю poitns моего столбца the_geom, он кажется очень сломанным.
select st_astext(geom) from (select (st_dumppoints(the_geom)).* from nybb where borocode =1) foo;
Дает результат...
st_astext
------------------------------------------
POINT(1007193.83859999 257820.786899999)
POINT(1007209.40620001 257829.435100004)
POINT(1007244.8654 257833.326199993)
POINT(1007283.3496 257839.812399998)
POINT(1007299.3502 257851.488900006)
POINT(1007320.1081 257869.218500003)
POINT(1007356.64669999 257891.055800006)
POINT(1007385.6197 257901.432999998)
POINT(1007421.94509999 257894.084000006)
POINT(1007516.85959999 257890.406100005)
POINT(1007582.59110001 257884.7861)
POINT(1007639.02150001 257877.217199996)
POINT(1007701.29170001 257872.893099993)
...
Для точек в Нью-Йорке это очень плохо.. Что я делаю не так?
2 ответа:
Точки не из. Пространственные данные, на которые ссылаются, не находятся в lat/long. Вот почему цифры отличаются от того, что вы ожидаете. Если вам нужно, чтобы он был в long/lat, он должен быть перепроектирован. Смотрите больше здесь: http://postgis.refractions.net/news/20020108/
Проекция данных, по-видимому, находится в системе координатNAD_1983_StatePlane_New_York_Long_island_fips_3104_feet (согласно метаданным - см. код.).<spref> <horizsys> <planar> <planci> <plance Sync="TRUE">coordinate pair</plance> <coordrep> <absres Sync="TRUE">0.000000</absres> <ordres Sync="TRUE">0.000000</ordres> </coordrep> <plandu Sync="TRUE">survey feet</plandu> </planci> <mapproj><mapprojn Sync="TRUE">Lambert Conformal Conic</mapprojn><lambertc><stdparll Sync="TRUE">40.666667</stdparll><stdparll Sync="TRUE">41.033333</stdparll><longcm Sync="TRUE">-74.000000</longcm><latprjo Sync="TRUE">40.166667</latprjo><feast Sync="TRUE">984250.000000</feast><fnorth Sync="TRUE">0.000000</fnorth></lambertc></mapproj></planar> <geodetic> <horizdn Sync="TRUE">North American Datum of 1983</horizdn> <ellips Sync="TRUE">Geodetic Reference System 80</ellips> <semiaxis Sync="TRUE">6378137.000000</semiaxis> <denflat Sync="TRUE">298.257222</denflat> </geodetic> <cordsysn> <geogcsn Sync="TRUE">GCS_North_American_1983</geogcsn> <projcsn Sync="TRUE">NAD_1983_StatePlane_New_York_Long_Island_FIPS_3104_Feet</projcsn> </cordsysn> </horizsys> </spref>
Если вы много работаете с пространственные данные я предлагаю вам прочитать больше окартографической проекции .
Я думаю, что это не проблема с PostGIS. Я проверил входной файл Esri Shape file
nybb.shp
с помощью AvisMap Free Viewer и, как вы видите, точки сами по себе странные:Однако есть кое-что интересное в файле метаданных
nybb.shp.xml
:<spdom> <bounding> <westbc Sync="TRUE">-74.257465</westbc> <eastbc Sync="TRUE">-73.699450</eastbc> <northbc Sync="TRUE">40.915808</northbc> <southbc Sync="TRUE">40.495805</southbc> </bounding> <lboundng> <leftbc Sync="TRUE">913090.770096</leftbc> <rightbc Sync="TRUE">1067317.219904</rightbc> <bottombc Sync="TRUE">120053.526313</bottombc> <topbc Sync="TRUE">272932.050103</topbc> </lboundng> </spdom>
Я не знаком с этим инструментарием (ESRI ArcCatalog), но, скорее всего, вам нужно изменить масштаб точек после импорта, используя эти метаданные.