Пишите свой вопрос в каменты, отвечу всем как только смогу.
Внимание! Автоматических уведомлений об ответе нет, проверьте наличие ответа"вручную" через день-два
PostGIS мануал на русском | описание PostGIS | консультация по PostGIS | PostGIS FAQ ЧаВо | ГИС | клиент PostGIS | преобразование координат | трансформация координат | загрузка данных (импорт) | пространственный индекс GiST | использование PostGIS | выгрузка данных (экспорт)| работа с PostGIS
Редактирование PostGIS
сейчас работаю на MapServere с шейпами, подумываю перейти на формат PostGIS, смущает проблема: Как потом редактировать геоданные в PostGIS. В интернете не смог найти готовых решений
A: Редактирование PostGIS
OpenSource проект, разрабытываемый в Испании по инициативе Евросоюза. Редактирует, вроде-бы стабильно работает, хоть и на Java. Подключается к PostGIS, WMS и другим источникам данных. UI немного страдает, но разобраться можно. Кроме того, есть подробная инструкция (на 300 страниц) на английском.
OpenSource проект. Редактирует, но плохххо-плоххо. Работает в целом нестабильно (так как пока в версии 0.8)
Коммерческий проект. Судя по описанию - весьма неплох, но в demo-версии редактировать не дает. Хотя общее впечатление осталось приятное. СтОит около $100 за лицензию, что на самом деле намного меньше, чем ArcGIS (не забудьте +oracle ++...)
OpenSource проект. Тоже на Java и тоже испанский. Туговат. Мне не понравился.
OpenSource проект от разработчиков PostGIS. На Java на основе Eclipse. За одно это его не люблю. В предыдущих версиях работал сильно нестабильно. В последней (1.1-RC10a) долго искал и так и не нашел tool для перетаскивания редактируемого объекта. В общем, может к версии 2.0 он и будет для чего-то пригоден, но не сейчас.
ArcGIS + PostGIS
Подскажите, есть ли инструменты для прямого чтения пространственных данных PostGIS в среде ArcGIS Desktop? И есть ли возможность редактировать в ArcGIS данные PostGIS напрямую, как это сделано для ArcSDE? Каковы вообще перспективы по развитию этой связки?
A: ArcGIS + PostGIS
К сожалению многих, на данный момент нет возможности редактировать данные PostGIS из ArcGIS напрямую. Тем не мение, в ArcCatalog (9.2) уже есть возможность экспорта данных в PostGIS. (работает нормально, только имена полей в двойные кавычки " " берет. Ну и меделенновато как-то.)
Посему думаю, что перспективы есть и большие. Будем ждать... :)
Приложение называется zigGIS.
Приложение называется zigGIS. Позволяет загружать и редактировать данные PostGIS. У бесплатной версии ограничения на число записей в одном слое до 100. Платная стоит 280 у.е. Оплата через Гугл. Купил. Исследую.
zigGis
коллега, согласитесь - какашка (я о zigGis )
если более расширенно - довелось заниматься программным расширением этого чуда. Общее впечатление - библиотека сырая, глючная (во многом благодаря используемой сырой и глючной npgsql ). С идеологической же точки зрения zigGis - это решение "сбоку", которое очень скоро умрет ( как только в ArcGIS появится прямая поддержка PostGIS)
Java + GIS
Итак, судя по вашей реакции на Java Вы не являсь поклонником этого могучего современнешего геопространственного языка. Хотя не прочь на халяву ей же и попользоваться.
К вашему сведению Javе всего 10 лет - а на рынке она уже обставила во многих отношениях ваш любимый и дорогой (во всяком случае для Windows)С/C++, ублюдочный (сорри верблюдочный) Perl (если это можно назвать языком) и новое увлечение молодых да неопытных Python (змеинообразнрсть во всем).
Теперь о наших GIS делах. Первая ГИС ориентированная библиотека, я имею ввиду иплементация Open GIS/Geospatial Consortium - OGC главного стандарта (SFS2{Sample Feature Specification part2} - SQL или по-казахски простая спецификация свойств геопространственных объектов для языка структуированных запросов) была сделана 5+ лет назад на языке Java и является единственной полной и работающей даже на табуретке (Windows, Unix/Linux/Posix, Macintosh и даже на мобильных телефонах). И имя ее - JTS, разработчик канадская Vivid Solution Inc. Если будет желание - посетите этот сайт. Там есть куча полезной инфы и всяческих тулзов в том числе JUMP - Java Unified Mapping Platform - или опять по казахски явавская унифицированная картографическая платформа, на которой Вы сможете легко и непренужденно поковыряться в Shapefiles. Я кстати только в ней смог раскрутить и обработать (я имею ввиду отредактировать несколько залепух от Tele Atlsa) всю автодорожную сеть Калифорнии, Техаса, Невады и Аризоны (более 10 млн. дорожных сегментов с с болле чем 70 аттрибутами каждый) вместе (45 Gigs Shapefiles). Так что Алга - то есть по-казахски Вперед.
Самое главное то, что всякие там приплюснутые (C/C++ programmers а сейчас C#), верблюдочные Perlовики и змееподобные Pythonскрипторы уже 3 год криво и косо пытаются перепеть JTS на свой лад да все как-то невпопад у них выходит. Слабо наверное.
Ну на сегодня пока.
Надо подумать как дальше раскручивать лозунг - Географ - Ты подписался на Javу!
Ваш Паганель
Java+,... Java-... главное - не инструмент.
Cher Аmi! Неужто вы считаете, что инструмент (то биш Jav'ы/Piton'ы и прочиее C++сы) серьезно определяет качество написанных на нем программ?! Либо Вы молоды, либо... На любую Jav'у нужны прямые руки и светлая голова, равно как на C++ и все прочее. Я видел очень много ублюдочных программ, написанных на всех известных и неизвестных мне языках - но вот на Jav'е таких было большинство. И я прекрасно понимаю, что не в самой жабе дело. Просто сейчас многие пацанчеги хотят малой кровью написать программу, чтоб работала "даже на табуретке". "Че у нас там межплатформенное?! А! Java.." И понеслась... А руки то кривые и инструмента не знают... Вот поэтому я отношусь к приложениям на Java весьма предвзято. Но, не хочу далее вдаваться в мелкие языковые дрязги - идите на форумы програмеров - там Вам расскажут ;)
Теперь вернемся к ГИСам. Все, что Вы сказали о JTS и JUMP - хорошо и верно. Но если вы решили специализированную задачу на специализированном клиенте - не возносите его к небесам. Его место существенно ниже. Вообще-то разговор наш в прицыпе беспредметный, ибо интересы наши, я так понял, не пересекаются. Мои интересы - централизованный анализ, обработка и распределение данных. Среди бесплатных решений(т.е. инструментов) лучшим является PostgreSQL/PostGIS. Чем именно? Не побоюсь быть банальным - отличительные качество этого тандема: расширяемость, гибкость, надежность и скорость. Расширенное описание потянет на баальшую статью. Только не здесь и не сейчас. (см. внизу главной страницы). Кстати, можете присоединится - обзор Java-решений тоже будет присутствовать ;)
З.Ы. А о том кто, как и сколько лет использует PostGIS Вы можете почитать
Пока.
PostGIS???
доброго времени суток..
Я постоянно пользовался ArcView и ArcMap. Сегодня узнал про PostGIS. если можно расскажите что это и как это работает.. кстати есть потребность в разработке ПО. как это можно делать под PostGIS. заранее спасибо!!
PostGIS !!!
Уважаемый zis!
Прошу прощения за столь поздний ответ- был занят сильно. Работает это все очень просто. В реляционную базу данных добавляется тип "геометрия" и несколько сотен серверных функций, которые умеют с данными этого типа делать все, что пожелаете. Т.е. PostGIS не рисует - PostGIS хранит, анализирует, модифицирует и предоставляет доступ к данным. Почитайте мануал и задайте более конкретные вопросы- всегда отвечу. Про графические клиенты можно прочесть чуть выше :) Удачи в познавании нового!
Макс. количество точек в полигоне.
Есть конкретный вопрос. Какое максимальное количество точек в полигоне поддерживает PostGIS. И в какой степени это количество влияет на быстродействие. Сейчас занимаюсь векторизацией карты, и хотелось бы знать заранее.
Я не слышал про
Я не слышал про такие ограничения. Несколько десятков тысяч тянет точно. Скорость.. хм.. ну ясное дело, что чем больше - тем медленние, но насколько - не имею понятия ибо с таким большим количеством вершин сталкиваться не приходилось. Следует заметить, что в младших версиях shp2pgsql (утилита импорта shp) был баг - он полигоны с большим количеством точек (~от 10.000) не втягивал попросту. Сейчас (в PostGIS 1.3.1) таких проблем нет.
Вопросы начинающего
Добрый день. Недавно заинтересовался ГИСами, сейчас пытаюсь поднять свой проект на MapServer'е. Соответственно, появились вопросы.
1. В каких случаях имеет смысл переход от шейп-файлов на postGIS?
2. Можно ли в рамках PostGIS'а решить задачу следующего характера: имеется карта города. Зная адреса двух зданий, проложить кратчайший маршрут от одного к другому?
Ответы бывалого ;)
Доброго времени суток.
1. Если у Вас задача только лишь отображать статичную карту (географические данные) в МС и ничего более то особого смысла нет в принципе. Если же предполагается пусть не частое, но регулярное обновление карты, нанесение дополнительной информации (слоев и объектов) и использование карты чем-либо кроме МС - то лучше перейти на PostGIS.
PostGIS имеет как минимум столько преимуществ перед МС, сколько реляционная СУБД имеет перед любой файловой структурой данных.
2. Задача прокладки пути нетривиальна и PostGIS'ом не решается, ибо не его дело.
PostGIS Java gvSig
Кто нибудь знает где найти информацию о разработке postgis eclipse GIS-системы gvSig, нужно добавить кнопочку для создания объекта в моем Java-проекте и последующем его добавлении через gvSig..
Есть конечно вариант решения.. впихивать прямо в БД данные, а потом обновлять в gvSig..
Вобщем нужно синхронизировать каким то образом 2 проекта, мой и gvSig, оба написаны на java.. тем паче исходники доступны..
PostGIS Java gvSig Русский
Уважаемый stim,
Вы, наверное, знаете язык Java. При всем должном уважении, я настоятельно рекомендую Вам подучить язык руссий. В частности, разделы "построение предложений" и "понятное мыслеизложение".
А вопрос по расширению по gvSig - это точно не ко мне. Спросите у испанцев.
ArcGIS искажения
Подскажи пожалуйсто как исправить то что после загрузки слоя в oracle через ArcSDE здания становяться кривыми!
как это можно исправить???
В MapInfo все отображаеться нормально!
Никогда не
Никогда не сталкивался с подобным. Чем вы загружали?
Здания становятся кривыми
Здания становятся кривыми после загрузки, а руки были таковыми изначально :). Советую изучить раздел "Системы координат и картографические проекции"
Kosmo+MySQL: вопрос от новичка
Добрый день!
прошу совета. Задача: организовать гис инженерных сетей в территориально распределенном предприятии. Выбраны бесплатные продукты
Kosmo+MySQL. Так вот, каким способом это можно организовать (конечно, кроме определенной структуры РБД), т.е. Может ли KOSMO на удаленном участке предприятия делать выгрузку, например, в файл IDF, чтобы потом синхронизировать с основной БД? Или надо будет что-то дописать,тогда вопрос на чем писать и применительно к самой БД или KOSMO? Может предложите технологию организации решения данной задачи, неохото изобретать веловипед. Заранее благодарна!
Архитектура
Доброго времени суток.
Прошу прощения за столь поздний ответ.
Не так давно решал (да и сейчас продолжаю) полностью аналогичную задачу. Но мы остановились на gvSig'е. Архитектура простая: каждый конкретный вид сетей хранится в своей отдельной базе (PostgreSQL/PostGIS) со своим пользователем. Все сети и подложка объединены в один WMS-сервис для показа (просмотра) Клиент-редактор коннекится к своей базе и правит свои слои. При внесении изменений информация сразу отображается на подложке у всех. Вкратце все. За подробностями на мыло.
WKT/WKB
Доброе время суток. Замечательный ресурс.
Обдумываю клиент для визуализации слоев Postgis.
Для связи с PG предполагется использовать библиотеку libpq.
Геометрию можно получить как в текстовом(WKT) так и в бинарном(WKB) виде.
Подскажите пожалуйста как эффективней визуализировать полученную геометрию ?
Парсить самостоятельно текстовое представление или есть способ бинарные данные успешно использовать?
Благодарю.
однозначно WKB
> Обдумываю клиент для визуализации слоев
- а я уже навзуализировался досыта.
Однозначно WKB, причем NDR
(парсинг текста займет столько процессорного времени, что прикладного смысла твоей проге найти не удастся)
Если пишеш на С - у тебя все типы данных под рукой, если на другом языке - опиши структуры-заголовки примитивов, напиши функции преобразования из WKB в формат, принимаемый GDI и вперед. В отрисовке ничего военного нет, изучи (повтори) теорию GDI и яростно следи за утечкой GDI-объектов (10000 и приложение вылетает). Рекомендую больше думать об общей архитектуре приложения и о тех прикладных задачах, которое оно сможет решать. Просто просмотр никому не интересен.
Как изменить тип геометрии POLYGON на LINESTRING?
Как изменить тип геометрии POLYGON на LINESTRING?
Дело в том что функций работы с LINESTRING значительно больше (почти все) чем с POLYGON. Вот надо мне узнать координаты третьей точки, а функция ST_PointN(geometry,integer) работает тока с LINESTRING, в то время как нужные координаты хроняться как POLYGON..
изменить тип POLYGON на LINESTRING
Доброго времени суток, Олег.
Очень просто:
а) берете внешнее кольцо полигона и, поскольку оно замкнутое (первая и последняя точка совпадают) -
б) удаляете последнюю точку.
Взять внешнее кольцо полигона: ExteriorRing(geometry)
Удалить точку: removePoint(geometry, integer)
Количество точек: nPoints(geometry)
( ну или все в префиксом "st_" если Вам так больше нравится)
Пример 1 (функциональный):
SELECT removePoint(closed_line, nPoints(closed_line)-1) AS open_line FROM (SELECT ExteriorRing(object) AS closed_line FROM map_table
)q;
Пример 2 (наглядно посмотреть координаты):
SELECT AsText(object) AS PolygonOriginal, AsText(closed_line) AS ExteriorRing, AsText(open_line) AS result FROM (
SELECT object, closed_line, removePoint(closed_line, nPoints(closed_line)-1) AS open_line FROM (
SELECT object, ExteriorRing(object) AS closed_line FROM map_table
)q
)z;
писал на скорую руку, может не совсем оптимально, но 100% работает ( PostgreSQL 8.3.3, PostGIS 1.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1)
DDL таблички:
CREATE TABLE map_table
(
id SERIAL NOT NULL,
"object" geometry,
CONSTRAINT map_pg_pk PRIMARY KEY (id),
CONSTRAINT enforce_dims_object CHECK (ndims(object) = 2),
CONSTRAINT enforce_geotype_object CHECK (geometrytype(object) = 'POLYGON'::text OR object IS NULL),
CONSTRAINT enforce_srid_object CHECK (srid(object) = 4326)
);
Отрисовка слоев в Delphi
Доброго времени суток, Александр!
Если не затруднит, помоги начинающему постгисовцу. Стоит задача максимально быстрой отрисовки слоев Postgis в Delphi. Верный ли мой подход?
1) Получаем геометрию в формате WKB:
SELECT AsBinary(object) FROM ...
2) Функция libpq PQgetvalue по умолчанию возвращает строковое представление, а преобразовывать его в двоичное - дело накладное. Поэтому используем двоичный курсор:
DECLARE ... BINARY CURSOR FOR SELECT ...
3) Двоичный курсор можно использовать только внутри транзакции, поэтому используем BEGIN-FETCH-COMMIT.
4) Для непосредственной отрисовки используем методы Polyline, Polygon канвы TBitmap (естественно, с масштабированием).
И еще вопросы:
5) Где находятся описания структур-заголовков примитивов?
6) Можно ли сразу (за один запрос) получить координаты точек LINESTRING, не прибегая к NumPoints и PointN?
Заранее благодарен.
Отрисовка слоев в Delphi
Доброго времени суток, Саша.
Пункты 1..3 абсолютно правильны. Хочу только заметить, что под Delphi следует использовать порядок байт NDR:
SELECT ... AsBinary(the_geom, 'NDR') FROM ...
и закрывать транзакцию я предпочитаю командой END. Она является полным синонимом COMMIT, но, с.м.л.т.з, является более "благозвучной", т.к. мы ничего не изменяем в базе и, следовательно, ничего не коммитим.
4) ..используем методы ... канвы TBitmap.. - неверный подход. Тут затык по скорости жуткий будет. Пока объектов немного (десяток-два)- все в принципе работает хорошо. Но когда надо отрисовать пару тысяч и стоИт временной лимит - будет, скажем так, полный пэ. Рекомендую использовать нативное GDI API, а рисовать на DC, только нужно внимательно следить за утечкой GDI-объектов. В таких программах она опаснее, чем утечка памяти.
5) в файле wkb.h в сырцах постгиса. Перевести их один-к-одному на Pascal не получится, придется работать с указателями.
6) А чем AsBinary(some_line, 'NDR') не массив точек?:
typedef struct WKBLineString_t {
byte byteOrder;
uint32 wkbType; // 2
uint32 numPoints;
Point points[1]; // [numPoints]
} WKBLineString;
Или нужно получить каждую точку в отдельной строке резалтсета? Опишите прикладную задачу..
Кэширование запросов в PostGIS
Доброго времени суток.
Понимаю, вопрос больше относится к Postgre но возможно Вы знаете ответ.
Имеется таблица небольшого объема - 18-20 мб. Геометрия - полигоны с большим количеством вертексов. Запрос на получение всех геометрий из таблицы выполняется примерно за 8 секунд на Postgre.
Аналогичная таблица с бинарным полем на MsSQL Express первый раз возвращается тоже за 8 секунд. Но второй аналогичный, или другие запросы к этой таблицы выполняются практически мгновенно. Связанно это я так понимаю с кэшированием, которое очень хорошо реализовано на MsSQL.
Никакие манипуляции с конфигом Postgre(увелечение всех параметров работы с памятью) не позволили мне уменьшить время последовательных запросов к одной и той же таблице.
Что Вы можете посоветовать?
Работа с TOAST
Еще небольшой вопросик: как Вы посоветуете оптимизировать работу с TOAST полями, под которые попадают все типы PostGIS?
TOAST и больщое количество вершин
Доброго времени суток, Евгений.
Вряд ли смогу посоветовать "белые" решения лучше этого.
Возможно или невозможно?
У меня стоит задача в короткие сроки соорудить систему где необходимо получать глубину морского дна по каждой точке.
Имеется gvSIG, карта ETOPO1(формат TIF И georeferencedTIFF), так как я новичок в этих вопросах.прошу разешить вопрос:
Возможно ли создать средствами gvSIG такую систему, если да то посоветуйте как(хотя бы в общих чертах).
Спасибо.
Для человека нет ничего невозможного, ...
... если ему не надо делать это самому [ Закон Вейлера ] (:
Доброго времени суток, Alex.
Больше года не запускал gvSig (сейчас занимаюсь только серверной логикой postgeSql+PostGIS на стороне БД), но все-же попробую ответить (:
Насколько я понял, речь идет о локальной системе (одно - несколько Несвязанных рабочих мест), и вы просто хотите кликом мыши по карте получать глубину (высоту) в данной точке. Такого функционала в сиге вроде как нет (по крайней мере, сквозной поиск слов "elevation", "depth" и"altitude" по мануалу результатов не дал). Следовательно, ваша задача состоит в написании собственного программного обработчика на click в окне карты или что-то типа этого.
Логика проста до ужоса: по логическим Lat/Lon координатам получаете соответствующий физический пиксель растра и берете из него значения высоты. Поддержка TIFF/geoTIFF в gvSig есть, API есть. Осталось взять и сделать :)
К сожалению или к счастью, но мне не довелось заниматься программным расширением gvSig'а, но опыт работы с другими системами подсказывает, что задача ваша решается несложно и быстро. Полистайте Developers guide.
Я так же переадресовал Ваш вопрос одному своему знакомому, который плотно занимался gvSig’ом – от постарается ответить в свободное время.
Для человека нет ничего невозможного...
Спасибо за внятный ответ...на самом деле цель одна - используя возможности gvSIG написать некое подобие электронной карты, желательно что-нибудь связанное с рельефом...(работа исключительно на зачет(будет являться курсовой))
Подскажите что тогда в этом случае я могу выжать из gvSIG? визуально смогу построить систему координат(я так понял что ETOPO представлена в системе координат UTM), т.е нанести широту, долготу, названия,смогу сделать линки на определленные объекты. Посоветуйте что еще такого можно сделать?
Какую инфу кроме растра несет в себе GEOTIFF?И что такое привязать изображение GEOTIFF?(много где пишут но объяснения в интернете не нашел)
Дело в том, что в этом деле полный чайник, но из необходимости в течение недели выродить подобие электронной карты, приходится задавать глупые вопросы знающим людям, таким как вы.
Спасибо.
Валидация объектов
Здравствуйте.
Не подскажете как лучше организовать проверку валидности двумерных мультиполигонов ?
Основные аномалии: повторение точек в контурах, самопересечение, касание,полигоны с нулевой площадью.
isValid дает слишком лаконичный ответ. Где-то попадалось упоминание о isValidReason, но в PostGIS 1.3.6 ее нет.
isEmpty и isSimple тоже всё не решают.
Есть ли какие готовые средства для устранения легкоисправимых дефектов в геометрии на стороне СУБД ?
Или проще каждый объект обрабатывать на стороне клиента и обновлять строку исправленным объектом ?
Алгоритмы/библиотеки может есть какие-нибудь доступные .
Благодарю.
Валидация объектов
>>Или проще каждый объект обрабатывать на стороне клиента и обновлять строку исправленным объектом ?
- Ну зачем же дурно гонять данные на клиента и назад? Все эти вопросы можно решить на стороне БД, либо родными средствами PostGIS (правда придется валидаторы самому писать на SQL и/или PL/SQL), либо прикрутить готовую стороннюю библиотеку (вот, правда, готовых не подскажу).
Кстати о валидаторах. Ошибки конфигурации геометрии только кажутся типичными. Но это не так, ибо в общем случае неизвестно, что именно за данные хотелось представить данным набором координат и откуда собственно взялось нарушение конфигурации. По-этому, валидаторы зачастую нужно писать (или подгонять) для каждой конкретной задачи. Если найдете готовые, которые смогут решить вашу задачу - кричите ура ибо удача!
- покопайте в сторону st_simplify. Задавая маленький tolerance вы сможете сохранить конфигурацию геометрии (т.е. она может измениться, но за нижним пределом значимого диапазона, например за шестым знаком) и уберете все повторения. Толеранс подбирать эксперементально.
- исходя из простого правила "ребра колец полигона не должны пересекаться [а. с ребрами того же кольца б. с ребрами других колец]" можно вывести алгоритм валидации самопересечений, который сведет каждое самопересекающееся колько к двум касающимся кольцам. Если интересно - пишите, расскажу детальнее.
- хм.. обычно ошибкой считается отсутствие касания, там где оно действительно нужно (граф улиц, земельные участки ...). Если оно есть там, где оно не нужно - исправить это можно, пожалуй, только руками (с участием мозга).
- если периметр полигона с нулевой площадью [заметно] отличен от нуля - преобразуйте полигон в линию (из внешнего кольца). Если же и периметр нулевой - преобразуйте в точку.
Хочу работать с ГИС
Уважаемый Александр, Я новичок (по сравнению с вами) в ГИС технологиях но очень интерисуюсь этими вопросами. Подскажите где у нас в Украине работают в этом направлении. Я сам из Ивано-Франковска и хотел бы работать с ГИС технологиями. Только незнаю куда у нас в стране можно обратится. Я закончил Университет за границец (Россия, г.Великий Новгород) и имею уже кое-какой опыт работы в ГИС. Но незнаю где теперь реализовать свои навыки и умения.
Зарание благодаре жду ответ.
Есть одна..
..
тянфирма (:сходите сюда: http://sigma-ltd.net/
(Дмитрич, если спец хороший - с тебя пиво :D )
спеца не видел, но за рекламу
спеца не видел, но за рекламу спасибо + пиво :)
Искажение в ArcGis 9.2
Здраствуйте!!! Помогите пожалуйста добрые люди. Я печатаю с ArcGis и он даёт искажение а эсли экспортироват карту и печатать с фотошопа то нормально.А пряма с ArcGis даёт искажение.
Добрые люди
..уже отвечали на подобный вопрос. Лучше я ответить не смогу :)
Смена кодировки
Здравствуй, Александр!
Есть маленький, но важный вопрос. У меня есть в БД постгисовские слои в кодировке WIN1251 (наряду с координатной информацией присутствуют названия стран, городов и т.д. на русском языке). Возникла необходимость текстовую информацию перевести в UTF-8. Как это сделать быстро и безопасно?
Старый верный способ:
Старый верный способ: http://archives.postgresql.org/pgsql-general/2004-02/msg01192.php
(первый в выдаче по http://www.google.com.ua/#hl=ru&source=hp&q=postgresql+change+database+e... ;) )
Есть и другие, но они, пожалуй, более замороченные.
Доброе время суток,
Доброе время суток, Александр!
У меня есть PostGIS таблица- импортированная с shp файла. Задача: найти объект по адресу, может быть улица + дом, может быть город + улица... если не один то список подходящих под условие мест. Меня интересует, есть ли какие то готовые решения, или пути решения.
Заранее спасибо !
Суть вопроса
я так до конца и не понял - "может быть улица + дом, может быть город + улица..." - это запрос или это имеющиеся данные?
Если данные не структуризированы - единственно-правильное решение - структуризировать их (как - тема отдельного сообщения, алсо см ниже). И потом проводить любого рода поиск не составит проблемы.
Если речь идет о запросе - здесь тоже сложного моло, но обязательно выполнения предыдущего пункта.
Приведите структура Вашей таблицы и пример данных ( строк 10, наиболее "показательных").
экспорт данных из mapinfo 7.5 в postGis
Добрый день, alexrush!
В мап инфо 10 появилась возможность работать с ПостГисом. Вместо таб файлов не позволяющих производить одновременное редактирование слоёв нескольким пользователям, теперь всё может быть перенесено в адекватную клиент-серверную СУБД.
Прочитав такую радостную новость, я с дрожащими руками взялся за заливку таб файлов в ПостГис при помощи утилиты ogr2ogr, но вот тут та и насткнулся на глабли. База созданая в postGis имеет кодировку utf-8, а наши *.tab cp1251. Благодаря такому стечению обстаятельств все мои слои с забитыми русско язычными описаниями не загрузились. Я уже перепробовал множество других вариантов, но ничто не принесло желаемого результата.
Может быть есть какой то способ безболезнено решить данную проблему? Гугл предательски молчит и упорно не хочет мне помогать:)
Зарание благодарен.
С уважением, Андрей Мский.
mif2pg.pl решил мой вопрос,
mif2pg.pl решил мой вопрос, только так я и не смог научить map info 10 отрисовывать геометрию. он отображает просто таблицу.
При нажатии кнопки Make DBMC Table Mappable, мы меняем index type на PostGis, а в выпадающем списке Index Column выбираем поле с геометрией и gist индексом. Нажимаем OK и Map info выдаёт следующие ошибки:
ODBC Error: ODBC RC=-1, ODBC SQLState=3f000, DBMS Msg=ERROR: schema "mapinfo" does not exist;
Error while executing the query.
пробовал менять одбс не помогло.
The table you have chosen cannot be made mappeble. To be made mappable, a table must contain a spatial column, or at least two numeric columns.
Прошу помочь с устранением ошибок и отображением геометрической информации в графическом виде. могу выслать SQL дамп слоя.
c MapInfo больше не дружу (:
Здравствуйте, Андрей.
С MapInfo лицом к лицу не сталкивался более полутора лет и знаете что я вам скажу - даже не тянет :)) Я даже пропустил такую чудесную новость, как попытки мэпинво подружиться с постгисом. Хотя теперь наверное займусь :)
Первое, что бросается в глаза - schema "mapinfo" does not exist; - может схема "mapinfo" действительно does not exist ?
To be made mappable, a table must contain a spatial column, or at least two numeric columns - опять таки, есть ли в таблице два числовых столбца? (геометрия и один числовой, как я понял, есть). Если нет - самый простой вариант - добавьте к таблице еще одно поле вида id2 serial).
Здравствуйте. Есть пара
Здравствуйте. Есть пара странных мультиполигонов в слое.
При увеличении перестают отображаться.
Эффект идентично наблюдается в QGIS и Mapserver.
В QGIS при попытке выделить такой видимый полигон - ничего не находится.
PostgreSQL 8.3+PostGIS 1.3.6.
Функция cleangeometry не помогла.
В каком направлении смотреть ?
Благодарю.
надо что-то лечть. либо болезнь, либо симптомы (:
Доброго времени суток.
Вариантов два - либо это невалидные полигоны, либо баг QGIS и Mapserver'а (что, к сожалению, вероятнее). Я сталкивался и с тем и с другим. Во втором случае остается надеяться разве что на то, что в к следующему билду исправят :) [чего, как правило, не происходит :) :) ]
Если выгрузить полигоны в shape-файлы и открыть чем-то "путёвым", например ArcView - как отображаются полигоны?
Что возвращает ST_IsValid для этех полигонов? Если false - вызовите ST_IsValid для каждого кольца полигона отдельно (для внешнего и всех внутренних) не забыв при этом преобразовать LINESTRING'и в POLYGON'ы - так вы найдете битое кольцо. Если нет - значит пересекаются разные кольца. В любом случае, невалид нужно найти и исправить.
Если же полигоны валидны и имеет место баг отображения -рекомендую разбить их на максимально простые объекты. Отображению это должно помочь, а вот логика приложения пострадает, т.к. для одного логическог объекта у вас будет несколько записей в БД. Из этой ситуации можно выйти только перекраиванием структуры БД, например:
-- для логических объектов создаем таблицу видаCREATE TABLE logical_object(
id serial PRIMARY KEY,
some_attribule sometype, -- любые аттрибуты
metric GEOMETRY -- метрика объекта - его "правильная", сложная геометрия, используемая для анализа и решения прочих логических задач
) WITH (OIDS=true);
-- Идея наша в том, чтобы сложный в отрисовке объект разбить на ряд простых.
-- Создаем таблицу для хранения таких простых объектов и их связи с логическим объектом
CREATE TABLE drawing(
id serial PRIMARY KEY,
object_id integer, -- ссылка на логический объект (logical_object)
drawing_obj GEOMETRY -- собственно, простой элемент для отрисовки
CONSTRAINT drawing_logical_object_fk FOREIGN KEY(object_id) REFERENCES logical_object (id) ON DELETE CASCADE
) WITH (OIDS=true);
-- связываем обе таблицы представлением:
CREATE VIEW drawing_layer AS
SELECT d.oid as oid, -- всякие мапсерверы и квантумы жить не могут без этого поля (:
d.drawing_obj as DrawingId,
lo.id as ObjectId,
d.drawing_obj as geom
[,lo.some_attribule]
FROM drawing d, logical_object lo
WHERE lo.id = d.object_id;
-- Само предстваление нужно не забыть добавить в geometry_columns
** SQL был набросан "от руки", только для того, чтобы передать идею и на работоспособность не проверялся.
Если опишите свою структуру данных и задачу - смогу подсказать конкретнее.
Странные индексы
Здравствуйте. Благодарю за интересную идею.
Проблему решило
REINDEX index "имя пространственного индекса".
Процедуру перестройки индекса приходится периодически повторять.
Может я что-то недопонимаю, но чувствую, что должен быть простой способ автоматизации обновления индекса.
Или только выполнять по расписанию ?
С[т]ран[н]ые индексы (:
Еще раз здравствуйте.
>>Процедуру перестройки индекса приходится периодически повторять
- а если не повторить - что происходит: снова не рисуются большие полигоны? Или/и другие? Или вообще все?
И после чего начинает сбоить?: после правки больших полигонов, правки других объектов или вовсе после вставки новых?
А переиндексацию действительно можно запускать по расписанию, но это вопрос скорее по администрированию Postgre и вашей ОС (покопайте в сторону pgAgent). Но я думаю, более правильный вопрос - "как избежать переиндексации?"
Возможно это архитектурные
Возможно это архитектурные проблемы таблицы
Таблица имеет подобную структуру
CREATE TABLE myobjects(
id serial PRIMARY KEY,
some_attribule sometype,
the_geom GEOMETRY,
isactive BOOLEAN
) WITH (OIDS=false);
существует еще таблица родительских связей объектов( для доступа к истории объектов)
CREATE TABLE parentlinks(
id serial PRIMARY KEY,
parentid BIGINT,
childid BIGINT
) WITH (OIDS=false);
При изменении объекта***:
1.В соответствующей записи выставляется isactive=false;
2. Добавляется новая запись с измененными данными и isactive=true;
3. В таблицу связей добавляется строка с указанием старого и нового id объекта.
Для отображения используется выборка с isactive=true.
Странности с отображением происходят при апдейте объекта***(три действия указанные выше)
pg2av
жив ли еще данный проект и где можно скачать программу? все ссылки в интернете которые нашел уже не работают. может быть поздно обратился, но очень интересует данный вопрос.
pg2av
Программу (точнее набор программ и скрипты) pg2av можно взять у меня, но проект скорее мертв, чем жив - я давно забил на ArcView 3.2 за отсутствием сколь-либо серьезного спроса
AV2pg
можно поподробнее. и если возможно то отправьте на мой маил саму программу.
Проблемы кодировки в PostgreSQL 9
Здравствуйте!
Решил перейти с постгреса 8.3 на 9. Забекапил свою большую БД с гисовскими слоями (БД изначально создавалась в уин1251), полностью снес 8.3, установил 9 (при установке теперь не спрашивается кодировка по умолчанию! сам лупит ютф8!), сверху поставил постгис 1.5 (он, естественно, встал тоже с ютф8) и получил бяку при восстановлении своей БД.
1) Создать новую БД на уин1251 с постгисовским шаблоном не удается (шаблон-то в ютф8!).
2) Создаю БД с ютф8, восстанавливаю забекапленную БД и... При выведении названий городов на русском языке (программа на дельфи) вылезают кракозябры типа РеР№Ры...
Что делать?
Возвращаться к постгресу 8.3? Не солидно.
Заново создавать БД на ютф8? БД очень большая.
Чувствую, что есть простое решение, но какое найти не могу. Спасибо.
win1251 > utf8
фуф, тыщу лет этим не занимался - уже забыл, что такое 1251 :)
стандартного решения увы нет, но есть обходные. Медленный но надежный - сохраняете бекап в обычном SQL с INSERT (не COPY) командами, текстовый файл перегоняете из 1251 в утф и восстанавливаете. Долго,
дорого, охуенно, дешево и сердито.перекодировать файл нужно, ясное дело, не текстовым редактором (если гектарный бекап - любой редактор его и открыть-то не сможет) - гугл знает утилиты.
можно функциями конвертации строк переодировать в самой бд, но это более мутно.
Проблемы кодировки в PostgreSQL 9
Немного ошибся. Не с 8.3, а с 8.1.
Отправка бинарных данных в постгис
Доброго времени суток, Александр.
Благодаря вашей помощи (от 25.03.2009) я научился быстро получать гисовские данные в бинарном формате. Но теперь возникла обратная задача: гисовкие данные отправить в БД . Например, для нахождения расстояния между двумя точками я пишу запрос типа
SELECT ST_distance_sphere('SRID=4326;POINT(30.5 50.4)','SRID=4326;POINT(30.8 50.9)')
Хотелось бы это сделать не в текстовом, а в бинарном формате. Что-то типа
SELECT ST_distance_sphere(GeomFromWKB(point1,4326),GeomFromWKB(point2,4326))
В связи с этим три вопроса.
1. Можно ли в принципе отправить в БД гисовские данные в бинарном формате?
2. Если да, то как это сделать в делфи? Как представить point: массив байтов, массив символов, строка, рекорд? У меня ничего не проходит.
3. Правильно ли я ожидаю повышения быстродействия в этом случае?
Спасибо.
Бинарные данные
Честно говоря, удивлен вопросом (либо же не понял его правильно):
1. Геометрия postgis может лежать как в бинарном, так и в текстовом виде, как сами положите. Но в текстовом виде данные в базу никто не кладет и места чуть больше занимает и обсчитывать долго.
2. Point нужно представлять по спецификации WKB. Равно как и всю остальную геометрию. У меня есть готовый код на делфи, могу поделиться кусочком.
3. Правильно
Уточнение вопроса
Попытаюсь сузить вопрос. Я формирую в памяти структуру размером 21 байт, описывающую точку по спецификации WKB:
TWKBPoint = record
byteOrder: Byte;
wkbType: Cardinal; // 1
point: record
X,Y: Double;
end;
end;
и пытаюсь отправить ее в запросе в бинарном формате. Но... функция libpq PQexec принимает SQL-запрос как char*. И первый же #0 в двоичном представлении X или Y прерывает строку. Вот где затык. Хотелось бы знать решение. Спасибо.
xcvdedssg
Особенности ультразвука
Обратите внимание наобмен постовыми !
обвязка скважин
брокерская компания
пс джейл брейк
Отправить комментарий