Хитрые ситуации при загрузки SHP в PostGIS+PostgreSQL

Ответить
Аватара пользователя
arzobispo
Активный участник
Сообщения: 230
Зарегистрирован: 10 сен 2008, 10:28
Репутация: 3
Контактная информация:

Хитрые ситуации при загрузки SHP в PostGIS+PostgreSQL

Сообщение arzobispo » 03 янв 2010, 22:43

Всем привет!
Обнаружил интересный глюк в PostGIS+PostgreSQL при загрузке shp-файлов. Причем от чего он происходит понять не удается, но глюк появляется так:
1. Создаем псевдокарту (т.е. токо квадратики) в MapInfo в хаотичном порядке, чтобы при автоматической (загрузчик пронумерует) нумерации не совпадали они с фактическим местоположением.
2. У карты есть таблица и у нее полей (столбцов) больше 5, у всех полей параметр - character varying (символьное).
3. Все ячейки таблицы не заполняем, ну можно заполнить пяток.
4. Переводим в SHP.
5. Загрузчиком грузим SHP в БД.

Потом зырим в pgAdmin и видим такую картину маслом:

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

CREATE TABLE glyuk
(
  gid integer NOT NULL DEFAULT nextval('glyuk_gid_seq'::regclass),
  id character varying(10),
  mename character varying(2),
  stname character varying(1),
  rname character varying(2),
  poname character varying(1),
  fname character varying(15),
  mname character varying(50),
  gname character varying(4),
  cname character varying(8),
  moname character varying(3),
  runame character varying(1),
  koname character varying(1),
  prname character varying(3),
  bname character varying(3),
  kname character varying(3),
  koname character varying(1),
  proname character varying(3),
  dename character varying(250),
  cvname character varying(15),
  tname character varying(100),
  konname character varying(254),
  the_geom geometry,
  CONSTRAINT glyuk_pkey PRIMARY KEY (gid),
  CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),
  CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL),
  CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)
)
WITH (OIDS=TRUE);
ALTER TABLE glyuk OWNER TO postgres;
Спрашиватеся, с какого перепугу gid стал иметь integer вместо serial?!!
При таком раскладе самый простой SQL-запрос на выборку (по одному столбцу) не работает :twisted:


И всё меняется, если каждый полигон рисуем попорядку, тогда любой SQL-запрос работает нормально и закрашиваются соответственно полигоны (тогда исчо не въехал в Глюк и откуда берется, а была просто карта с таблицей, не понятно почему когда-то так сделал. Читаем дальше и поймем почему).

З.Ы. Но как в рекламе: "...праздник был бы не полным без коробки конфет...", так вот, если у создаваемой карты сделать таблицу не больше 5 столбцов, и всё рисовать попорядку, то работает всё! И если для нужд надо больше столбцов чем 5, то просто добавить их надо искуственно в pgAdmin.

З.Ы. ШШ. Вот кто читал пост viewtopic.php?f=19&t=4577, тот наверное вспомнит, про полтергейст:
arzobispo » 02 янв 2010, 23:42 писал(а):

Полтергейст какой-то!!!
Заработало всё!!!
Так вот как и всегда был материалистом и точно знал, что он (полтергейст) ОТСУТСТВУЕТ, а раз так, то проблема в другом кроется, конечно догадывался, но вот токо сейчас ночью понял в чем дело, а дело в том, что таблицу у карты ОБЯЗАТЕЛЬНО надо заполнить (все ячейки) хоть нулями или словом из трёх букв, и вот тогда ЛЮБОЙ SQL-запрос будет работать!!! А потом в pgAdmin'е меняйте значения или удаляйте, всё будет работать, как Швейцарские часы :!: :wink:

Фантастика! :mrgreen:
С Уважением, Антон

oxch
Участник
Сообщения: 53
Зарегистрирован: 04 мар 2010, 11:30
Репутация: 0
Откуда: Комсомольск-на-Амуре
Контактная информация:

Re: Хитрые ситуации при загрузки SHP в PostGIS+PostgreSQL

Сообщение oxch » 21 апр 2010, 08:58

Возможно я и ошибаюсь, но насколько мне известно, тип SERIAL в PostgreSQL - это тип Integer с функцией присвоения номера на 1 больше, чем максимально существующий.

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

А как влияет другие параметры на результат мне неизвестны. Но за наблюдение спасибо.
Чудес на свете не бывает, они просто случаются.
Знать - значит уметь использовать.
Интерактивная карта-схема Хабаровского края

Аватара пользователя
arzobispo
Активный участник
Сообщения: 230
Зарегистрирован: 10 сен 2008, 10:28
Репутация: 3
Контактная информация:

Re: Хитрые ситуации при загрузки SHP в PostGIS+PostgreSQL

Сообщение arzobispo » 22 апр 2010, 09:34

Сейчас все также идет, заполнение произвольными числами, а потом очистка в загруженной БД.
С Уважением, Антон

Ответить

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

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

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