GeoFAQ siteФОРУМ ПО ГЕО-ИНФОРМАЦИОННЫМ ТЕХНОЛОГИЯМ

GIS, CAD, DTM, SQL, WWW, GPS, ETC.
 - Начало - Регистрация - Ответить - Поиск - Статистика - RSS
Форум GeoFAQ / Вопросы-ответы / Как создать рамки трапеций по координатам углов в MapInfo?
. 1 . 2 . >>
Автор Сообщение
valdemaarr
Участник
# Дата: 3 Мар 2011 18:24
Ответить 


Здравствуйте, коллеги!

Необходима Ваша помощь.
Возникла задачка: построить автоматически в MapInfo рамки трапеций м 1:10000 в системе СК 42 по координатам их углов.
Исходный материал - экселевский файл в формате:
N1 X1Y1 X2Y2 X3Y3 X3Y3
N2 X1Y1 X2Y2 X3Y3 X3Y3
N3 X1Y1 X2Y2 X3Y3 X3Y3
.
.
Nn X1Y1 X2Y2 X3Y3 X3Y3

где N - номенклатура (P-36-142... )
X1Y1 - координаты левого верхнего угла трапеции
X2Y2 - координаты правого верхнего угла трапеции
X3Y3 - координаты правого нижнего угла трапеции
X4Y4 - координаты левого нижнего угла трапеции

В результате нужно получить слой полигонов-трапеций с номенклатурой в атрибутике.

lalex
Участник
# Дата: 3 Мар 2011 23:27
Ответить 


Вот тут мапинфовцев поспрошайте.

valdemaarr
Участник
# Дата: 4 Мар 2011 09:53
Ответить 


Спасибо. В принципе, можно ведь построить эту штуку в ArcGis9... или в ArcView 3.2, а потом экспортировать в MapInfo. В этом случае хочу спросить: как сделать такой слой трапеций при помощи продуктов ESRI?

lalex
Участник
# Дата: 4 Мар 2011 21:48
Ответить 


Вариантов много.
1. Готовые шейпы можно поискать, 100K и 50 точно есть на РФ.
2. Отстроить по точкам-углам несложно, привести к виду
ID_Polygon Order X Y
и запустить в EditTools, Pnts->Poly
3. Это кажется квадраты если в географии? Ну и нарезать квадратов, через Fishnet. Апосля перегнать в нужную проекцию ;)

valdemaarr
Участник
# Дата: 5 Мар 2011 10:42 - Поправил: valdemaarr
Ответить 


Edit Tools уже установил, функцию применил, но точки в полигоны преобразовать не получается пока. Видимо что-то с форматом намутил.
Создал слой полигонов (СК42 зона 6) для одного планшета по такой таблице exel:

ID posl X Y
P-36-????????? 0 6????????? 6?????????
P-36-????????? 1 6????????? 6?????????
P-36-????????? 2 6????????? 6?????????
P-36-????????? 3 6????????? 6?????????

Выходной материал - трапеции.

lalex
Участник
# Дата: 5 Мар 2011 23:40
Ответить 


ID всегда номер должен быть. Текстовой не подойдет - это потом, атрибутику приклеите по номерам.
Order не знаю, но я бы с единицы сделал. Должно получится, стопудово.
О как я помню всё ;)

valdemaarr
Участник
# Дата: 9 Мар 2011 10:02 - Поправил: valdemaarr
Ответить 


ИЕЕЕЕЕСССССССССССС! Большое спасибо, lalex. По Вашему рецепту планшет по точкам строится без проблем. Дальше, как говорится, я сам.
Кстати, поспрошал мапинфовцев - ответили, тоже есть подходящий вариант.
Тему можно закрывать.

lalex
Участник
# Дата: 9 Мар 2011 23:58
Ответить 


Если можно, ссылку на мапинфовский вариант. Для народа будущего, и чтобы тему закрыть ;)

valdemaarr
Участник
# Дата: 11 Мар 2011 11:13 - Поправил: valdemaarr
Ответить 


Мой диалог с мапинфовцами - в теме "Как создать рамки трапеций по координатам углов в MapInfo?" на сайте Gold Tools for MapInfo (не могу вставить ссылку - не пропускает защита от спама и рекламы?!). Если надо расписать подробнее - обращайтесь. Но вся заковыка заключена в форматировании таблицы данных и создании пары файлов mif/mid.

lalex
Участник
# Дата: 11 Мар 2011 23:13
Ответить 


Ссылку можно просто текстом, обрезав http/... Или подождать, не помню через 5-10 постов, что ли, дадут вставлять.
Вставлю в библиотеку эту тему, как ссылку наладим. Пригодится ГИС-населению.

valdemaarr
Участник
# Дата: 12 Мар 2011 01:36 - Поправил: valdemaarr
Ответить 


Спасибо за подсказку насчет ссылок - чуть всю голову не сломал. Вообще, если будет время, постараюсь сделать программку на C++ (хочу освоить этот язык), которая будет форматить входной массив сразу под mif\mid. Сделаю - поделюсь. Сейчас я применил крайне неэлегантное решение - форма в "экселе" - копирование в "ворд" - форматирование - копирование в "пустые" mif\mid. Даже рассказывать стыдно, но работает. Один знакомый по моим горячим следам замастырил макрос под какой-то текстовый редактор типа MultiEditor - тоже не очень, но тоже работает. В общем, следите за рекламой :)
Замечу, что исходный файл и его формат данных - результат экспорта информации о нарезке ортофотопланов из проектов ЦФС "Талка". Этот формат стандартный, то есть коллегам-фотограмметристам, работающим в "Талке" эта тема может пригодиться, поскольку полученные Мапинфошные слои трапеций можно использовать, например, при создании программок для оформления сдаточной продукции.

lalex
Участник
# Дата: 12 Мар 2011 12:40
Ответить 


Текст форматить удобно в php, можно сварганить онлайн-сервис. Ну в Си должны быть тоже хорошие возможности по тексту.
Ссылку не забудьте на мапинфовское обсуждение
Ну и свои тулзы тоже кидайте, хоть целиком хоть рекламу ;)

valdemaarr
Участник
# Дата: 12 Мар 2011 16:59 - Поправил: valdemaarr
Ответить 


Мапинфовские обсуждения здесь:
http://map-info.ru/phpbb2/viewtopic.php?t=2134.
Если кому интересно, отвечу на все вопросы, поскольку (не в пост будь сказано) - дьявол кроется в мелочах ;)

valdemaarr
Участник
# Дата: 28 Мар 2011 21:00
Ответить 


Реклама :) Ваяю, как и обещал, прогу на C++. Пока только консольное приложение. Считывает данные из файла и форматирует как надо. Выдача пока только на экран, а не в файлы mif/mid. Надеюсь, что это вопрос одного-двух дней. Следующий этап - взять бутылочку чего-нибудь вкусного и пойти в гости к брату-програмеру - поможет перебить код в приложение Windows. Исходники кода не выкладываю до завершения "проекта". Дальше - для всех желающих доступ свободный в рамках правил форума.

lalex
Участник
# Дата: 28 Мар 2011 22:03 - Поправил: lalex
Ответить 


Дык, вродеж MIF/MID текстовые файлы, и даже где-то документированы. Они как раз для таких случаев, для ручного программинга... Выглядят примерно так:

MIF:
Version 300
Charset "Neutral"
Delimiter ","
CoordSys Earth Projection 8, 1001, "m", 39, 0, 1, 0, -4784577 Bounds (76215.1248130868, 22477.4979809885) (102951.671677448, 55360.3110067523)
Columns 5
NAME Char(4)
LAYER Char(17)
Label Char(10)
Name_full Char(254)
Stage Integer
Data

Region 1
7
93335.61 51185.52
93243.21 51257.29
93305.8 51359.58
93353.06 51410.41
93382.13 51413.08
93449.14 51357.05
93335.61 51185.52
Pen (1,2,0)
Brush (1,0,16777215)
Region 1
22

MID:
"18","Unknown Area Type","18","Временная припортальная площадка ",11
"20","Unknown Area Type","20","Временный мост №7 ",11
"20","Unknown Area Type","20","Временный мост №7 с подъездной автодорогой",11
"","Unknown Area Type","","Производственная база ПК374+60-ПК376+60",0
"29","Unknown Area Type","29","Временная припортальная площадка ПК450",0

Какие проблемы такой текст составить, раз уж C++ владеете?

valdemaarr
Участник
# Дата: 29 Мар 2011 09:23 - Поправил: valdemaarr
Ответить 


C++ только осваиваю (см. выше). Проблема, в основном, была в кардинальном отличии формата исходных данных от MIF/MID. Теперь, вроде как, все хорошо складывается: размерности полей исходника роли не играют, иксы и игреки на лету меняются местами (как в MapInfo). Предполагаю выдавать "шапку" MIF файла как NonEarth c границами Bounds равными 10000000. Еще, как вариант, пользователь может сам создавать "пустые" миф/мид и в них копировать форматированные координаты углов из моей программы (наверное, сделаю оба варианта на выбор). ГЛАВНОЕ, чтобы прога потом работала у всех и хорошо. Пока что каждый шаг тестирую на своих данных. А то ведь, сами знаете, потом концов не найдешь, поскольку исходные массивы могут быть очень большие. Кстати, строки Pen и Brush можно опустить.
P.S. В выходном мид-файле у меня будет только одно поле - под номенклатуру.

lalex
Участник
# Дата: 29 Мар 2011 22:40
Ответить 


Перфекционизм - страшная сила, зарубил не одну разработку. IMHO надо сперва сделать чтоб себя устраивало, а уж пользователи - потом... Да и им можно попроще подать, non-earth или как-то так. Поменьше кода, побольше инструкций - принцип опенсурс :)

valdemaarr
Участник
# Дата: 1 Апр 2011 12:06
Ответить 


Согласен! Будет Non-Earth, не будет стилей Pen и Brush, под номенклатуру - одно поле в mid. Вывод данных в файл готов (это проще, чем я думал). Если не придется сегодня-завтра сильно отвлекаться - составлю инструкцию. Далее - по плану. Кстати, подскажите, пожалуйста, как разместить свое добро на сайте?

lalex
Участник
# Дата: 1 Апр 2011 17:03 - Поправил: lalex
Ответить 


Проще всего на форуме. Как раз собирался создать отдельный раздел для такого рода, законченных публикаций... Ставить специальную веб-машинку для статей , как нынче делают, нету особого смысла, пока кворум в этом деле невелик. Но ежели всетки есть желание отдельной законченной статьей выступить, то все просто - присылаете текст, картинки, оформление может быть минимальным. Дальше мы тут дооформим согласно типовым стилям сайта. Как-то так, примерно. У автора там был свой дизайн, его лишь немного причесать пришлось. Но пойдет и голый текст, дальше общими силами.

Третий путь - размещаете где пожелаете, на своем сайте или у друзей, а у нас - ссылка, если все понравиться. Это даст нужный пиар, а вам может быть важно "владение" своим материалом, и постоянный доступ к его пополнению-дооформлению.

Если есть свои пожелания, велкам. Авторов мы ценим, в отличие от... ;)

valdemaarr
Участник
# Дата: 1 Апр 2011 17:10 - Поправил: valdemaarr
Ответить 


Отлично! Я как раз все доделал и прогу откомментировал (построчные комментарии к коду).
Материалы - Вам на размещение, если сочтете полезными. Своего интернет-ресурса все равно нет.
Говорю сразу и честно: код убогий, стиля программистского - ноль, но у меня все работает :) А дальше обработаем "зубилом и напильником".
Будет супер, если кто-нибудь отпишется о тестировании или боевом применении.

P.S. На какой емейл слать прогу и описалово?

. 1 . 2 . >>
Ваш ответ
Bold Style  Italic Style  Underlined Style  Image Link  URL Link 

» Логин  » Пароль 
Только зарегистрированные пользователи могут здесь постить. Авторизуйтесь для отправки сообщений, или зарегистрируйтесь сейчас.
 

Поддержка: PHP forum software miniBB™ © 2001-2017