связка MapServer+Postgis+Mapinfo

Ответить
Клим
Интересующийся
Сообщения: 24
Зарегистрирован: 29 авг 2011, 16:51
Репутация: 1

связка MapServer+Postgis+Mapinfo

Сообщение Клим » 31 авг 2011, 13:59

Доброго времени суток! Я пытаюсь разобраться со связкой MapServer+Postgis+Mapinfo. Выдает следующую ошибку:
msDrawMap(): Image handling error. Failed to draw layer named 'MapServ'. msPostGISLayerWhichShapes(): Query error. Error (ERROR: syntax error at or near "'MapServ'" LINE 1: ...D("SP_GEOMETRY"),'NDR'),'hex') as geom,"oid" from 'MapServ' ... ^ ) executing query: select encode(ST_AsBinary(ST_Force_2D("SP_GEOMETRY"),'NDR'),'hex') as geom,"oid" from 'MapServ' where SP_GEOMETRY && GeomFromText('POLYGON((0 0,0 10000,10000 10000,10000 0,0 0))',find_srid('',''MapServ'','SP_GEOMETRY')) msPostGISRetrievePK(): Query error. Error executing SQL: select attname from pg_attribute, pg_constraint, pg_class where pg_constraint.conrelid = pg_class.oid and pg_class.oid = pg_attribute.attrelid and pg_constraint.contype = 'p' and pg_constraint.conkey[1] = pg_attribute.attnum and pg_class.relname = ''MapServ'' and pg_table_is_visible(pg_class.oid) and pg_constraint.conkey[2] is null

Исходник MAP
MAP
IMAGETYPE GIF
EXTENT 0 0 10000 10000
SIZE 900 900
IMAGECOLOR 200 200 200
LAYER
NAME 'MapServ'
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=123456 dbname=postgis host=localhost"
DATA "SP_GEOMETRY from 'MapServ'"
TYPE POLYGON
CLASS
COLOR 200 120 123
END
PROCESSING "CLOSE_CONNECTION=DEFER"
END
END

Открываю в MapInfo все работает и редактируется.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: связка MapServer+Postgis+Mapinfo

Сообщение Mavka » 31 авг 2011, 15:26

лангольеры под окном жрали время ом-ном-ном

Клим
Интересующийся
Сообщения: 24
Зарегистрирован: 29 авг 2011, 16:51
Репутация: 1

Re: связка MapServer+Postgis+Mapinfo

Сообщение Клим » 31 авг 2011, 16:10

Я конечно сильно извиняюсь может я туплю но можно объяснить поподробнее. Я пытался делать запрос в pgAdmin выдает ошибку
Запрос: SELECT "NAME",encode(AsBinary(force_collection(force_2d("SP_GEOMETRY")),'NDR'),'hex')
AS geom,"gid" FROM 'MapServ' WHERE SP_GEOMETRY && GeomFromText('POLYGON((0 0,0 10000,10000 10000,10000 0,0 0))'
,find_srid('','MapServ','SP_GEOMETRY'));

Ошибка:
ERROR: syntax error at or near "'MapServ'"
LINE 2: AS geom,"gid" FROM 'MapServ' WHERE SP_GEOMETRY && GeomFromTe...
^

********** Ошибка **********

ERROR: syntax error at or near "'MapServ'"
SQL state: 42601
Символ: 107

Клим
Интересующийся
Сообщения: 24
Зарегистрирован: 29 авг 2011, 16:51
Репутация: 1

Re: связка MapServer+Postgis+Mapinfo

Сообщение Клим » 31 авг 2011, 16:14

Кстати пробовал колонку the_geom тот же результат и записывать имя таблицы по разному MapServ,'MapServ',"MapServ" не помогает результат тот же

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: связка MapServer+Postgis+Mapinfo

Сообщение Mavka » 31 авг 2011, 16:23

MapServ - уберите кавычки
SP_GEOMETRY - откуда такое странное название для колонки?
Откуда "NAME" во втором посте? В первом его не было.
лангольеры под окном жрали время ом-ном-ном

Клим
Интересующийся
Сообщения: 24
Зарегистрирован: 29 авг 2011, 16:51
Репутация: 1

Re: связка MapServer+Postgis+Mapinfo

Сообщение Клим » 31 авг 2011, 17:10

SP_GEOMETRY - это колонка создаваемая EasyLoader там хранится геометрия объектов MapInfo
по полю NAME пробовал сделать аналогию с запросом в представленной вами ветке

old_Bibigon
Участник
Сообщения: 78
Зарегистрирован: 25 янв 2010, 14:14
Репутация: 3

Re: связка MapServer+Postgis+Mapinfo

Сообщение old_Bibigon » 31 авг 2011, 19:44

попробуйте

Код: Выделить всё

...
DATA 'sp_geometry from "MapServ"'
...
Колонку SP_GEOMETRY надо переименовать в нижний регистр. Сколько я не возился с 5.6.x mapserver'ом, он у меня всегда терял экранирование для неё, а без кавычек PostgreSQL ожидает в нижнем регистре. 6й я не проверял ещё.
Делается так:

Код: Выделить всё

ALTER TABLE "MapServ" RENAME COLUMN "SP_GEOMETRY" TO "sp_geometry"
+- индексы поломать и запись о геометрии

Клим
Интересующийся
Сообщения: 24
Зарегистрирован: 29 авг 2011, 16:51
Репутация: 1

Re: связка MapServer+Postgis+Mapinfo

Сообщение Клим » 01 сен 2011, 06:32

Колонку "SP_GEOMETRY" переделал с нижним регистром результат тот же

old_Bibigon
Участник
Сообщения: 78
Зарегистрирован: 25 янв 2010, 14:14
Репутация: 3

Re: связка MapServer+Postgis+Mapinfo

Сообщение old_Bibigon » 01 сен 2011, 08:18

Клим писал(а):Колонку "SP_GEOMETRY" переделал с нижним регистром результат тот же
Покажите выводимую ошибку.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: связка MapServer+Postgis+Mapinfo

Сообщение Mavka » 01 сен 2011, 09:18

Код: Выделить всё

SELECT
    "NAME",
    encode(AsBinary(force_collection(force_2d("SP_GEOMETRY")),'NDR'),'hex') AS geom,
    "gid"
FROM 'MapServ'
WHERE
    SP_GEOMETRY
    && GeomFromText('POLYGON((0 0,0 10000,10000 10000,10000 0,0 0))',
                find_srid('','MapServ','SP_GEOMETRY')); 
Мой pgAdmin говорит что синтаксическая ошибка:

Код: Выделить всё

FROM 'MapServ' 
уберите кавычки:

Код: Выделить всё

FROM MapServ
Дальше пытает найти таблицу MapServ, которой у меня нет.
У вас еще ошибки остались?

Проверьте таблицу geometry_columns, там поле f_geometry_column как заполнено - SP_GEOMETRY или sp_geometry?
лангольеры под окном жрали время ом-ном-ном

Клим
Интересующийся
Сообщения: 24
Зарегистрирован: 29 авг 2011, 16:51
Репутация: 1

Re: связка MapServer+Postgis+Mapinfo

Сообщение Клим » 01 сен 2011, 11:28

Исправил название таблицы на mapserv поправил все индексы и записи о геометрии
В f_geometry_column стоит sp_geometry
При FROM mapserv говорит что не может найти таблицу, хотя она есть, и с MapInfo я её легко редактирую

Клим
Интересующийся
Сообщения: 24
Зарегистрирован: 29 авг 2011, 16:51
Репутация: 1

Re: связка MapServer+Postgis+Mapinfo

Сообщение Клим » 01 сен 2011, 11:41

Кстати может это поможет SQL на создание таблицы:
-- Sequence: "Проба"."mapserv_MI_PRINX_seq"

-- DROP SEQUENCE "Проба"."mapserv_MI_PRINX_seq";

CREATE SEQUENCE "Проба"."mapserv_MI_PRINX_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 4
CACHE 1;
ALTER TABLE "Проба"."mapserv_MI_PRINX_seq" OWNER TO postgres;

-- Table: "Проба"."mapserv"

-- DROP TABLE "Проба"."mapserv";

CREATE TABLE "Проба"."mapserv"
(
"ID" smallint,
"Наименование" character varying(70),
"Аббревиатура" character varying(6),
"Площадь_га" double precision,
"Примечание" character varying(50),
"MI_STYLE" character varying(254),
"MI_PRINX" integer NOT NULL DEFAULT nextval('"Проба"."mapserv_MI_PRINX_seq"'::regclass),
"sp_geometry" geometry,
CONSTRAINT "mapserv_pkey" PRIMARY KEY ("MI_PRINX"),
CONSTRAINT "enforce_dims_sp_geometry" CHECK (st_ndims("sp_geometry") = 2),
CONSTRAINT "enforce_srid_sp_geometry" CHECK (st_srid("sp_geometry") = (-1))
)
WITH (
OIDS=TRUE
);
ALTER TABLE "Проба"."mapserv" OWNER TO postgres;


-- Index: "Проба"."SIndex_mapserv_sp_geometry"

-- DROP INDEX "Проба"."SIndex_mapserv_sp_geometry";

CREATE INDEX "SIndex_mapserv_sp_geometry"
ON "Проба"."mapserv"
USING gist
("sp_geometry");

insert into "mapinfo"."mapinfo_mapcatalog" (spatialtype, tablename, ownername, spatialcolumn, db_x_ll, db_y_ll, db_x_ur, db_y_ur, coordinatesystem, symbol, xcolumnname, ycolumnname, renditiontype, renditioncolumn, renditiontable, view_x_ll, view_y_ll, view_x_ur, view_y_ur)
values ( 19.3, 'mapserv', 'Проба', 'sp_geometry', 4994.783505, 4998.525775, 5009.051550, 5003.453610, 'NonEarth Units "m" Bounds (0, 0) (10000, 10000)', '', 'NO_COLUMN', 'NO_COLUMN', 1, 'MI_STYLE', '' , 0.000000, 0.000000, 10000.000000, 10000.000000);


INSERT INTO "public"."geometry_columns" (
f_table_catalog, f_table_schema, f_table_name, f_geometry_column,
coord_dimension, srid, "type")
VALUES ('', 'Проба', 'mapserv', 'sp_geometry',
2, -1, 'GEOMETRY');

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: связка MapServer+Postgis+Mapinfo

Сообщение Denis Rykov » 01 сен 2011, 12:05

Использование кириллицы в именах полей и таблиц - моветон, не делайте так.
Spatial is now, more than ever, just another column- The Geometry Column.

Клим
Интересующийся
Сообщения: 24
Зарегистрирован: 29 авг 2011, 16:51
Репутация: 1

Re: связка MapServer+Postgis+Mapinfo

Сообщение Клим » 01 сен 2011, 12:24

Название схем можно и английским сделать а вот названия полей и таблиц все равно необходимо кириллицей, т.к. того требует основной проект, а конечный пользователь обычно не может правильно прочитать транс лит и тем более не знает английский

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей