Создание полилинии из данных (Map Cad)
- Bodia_K
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 05 дек 2012, 14:01
- Репутация: 0
- Откуда: Україна
Создание полилинии из данных (Map Cad)
Здравствуйте
Опишите (подробно), пожалуйста, создание полилинии из данных с помощью Map Cad
к примеру есть координаты 5 точек (x1 y1; x2 y2; ... x5 y5)
Большое спасибо.
Опишите (подробно), пожалуйста, создание полилинии из данных с помощью Map Cad
к примеру есть координаты 5 точек (x1 y1; x2 y2; ... x5 y5)
Большое спасибо.
- Bodia_K
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 05 дек 2012, 14:01
- Репутация: 0
- Откуда: Україна
Re: Создание полилинии из данных (Map Cad)
Разобрался. Как и с помощью Mi Cad, так и с помощью Map Cad.
Если понадобиться кому-то - спрашивайте.
Если понадобиться кому-то - спрашивайте.
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 17 июл 2015, 15:44
- Репутация: 0
Re: Создание полилинии из данных (Map Cad)
Добрый день.
Я уже второй час долблю MapCad но не выходит каменный цветок. Подскажите, плиз: как нарисовать линии из таблицы. Не полилинии, а несколько независимых линий, соединяющих концы точек (каждая пара точек представлена строчкой в файле эксел).
Сделал табличку в эксел: Объект1, Объект2, х1, у1, х2, у2.
Запускю MapCad, а он не видит в списке мою таблицу. В справке написано, что она должна быть картируемой. А как это? Что только ни делал - и пытался создавать точечные объекты, и геокодировал не приходя в сознание, и пытался индексировать поля с координатами и превращал тип данных с координатами из вещественных в десятичные... Без толку.
Я уже второй час долблю MapCad но не выходит каменный цветок. Подскажите, плиз: как нарисовать линии из таблицы. Не полилинии, а несколько независимых линий, соединяющих концы точек (каждая пара точек представлена строчкой в файле эксел).
Сделал табличку в эксел: Объект1, Объект2, х1, у1, х2, у2.
Запускю MapCad, а он не видит в списке мою таблицу. В справке написано, что она должна быть картируемой. А как это? Что только ни делал - и пытался создавать точечные объекты, и геокодировал не приходя в сознание, и пытался индексировать поля с координатами и превращал тип данных с координатами из вещественных в десятичные... Без толку.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Создание полилинии из данных (Map Cad)
Тут в одном вопросе куча ХЗ чего и не разобраться, что хотелось то.
Mi/Map CAD и прочие утилиты создают линии (полилинии) из линейного файла вот такой структуры:
После прохода по такому списку будут созданы полилинии с единственным атрибутом номер_линии(объекта).
Ваша задача с объектами и координатами в строке этими утилитами не решается. Она очень неплохо решается через OGR через формат CSV (на сайте есть статья - ORG2OGR SHp <-> CSV) или минимальным программированием через MIF/MID.
Mi/Map CAD и прочие утилиты создают линии (полилинии) из линейного файла вот такой структуры:
Код: Выделить всё
номер_линии(объекта), номер точки (нарастающие номера), координата Х, координата У.
Ваша задача с объектами и координатами в строке этими утилитами не решается. Она очень неплохо решается через OGR через формат CSV (на сайте есть статья - ORG2OGR SHp <-> CSV) или минимальным программированием через MIF/MID.
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 17 июл 2015, 15:44
- Репутация: 0
Re: Создание полилинии из данных (Map Cad)
Ок, по порядку.Boris писал(а):Тут в одном вопросе куча ХЗ чего и не разобраться, что хотелось то.
Mi/Map CAD и прочие утилиты создают линии (полилинии) из линейного файла вот такой структуры:После прохода по такому списку будут созданы полилинии с единственным атрибутом номер_линии(объекта).Код: Выделить всё
номер_линии(объекта), номер точки (нарастающие номера), координата Х, координата У.
Ваша задача с объектами и координатами в строке этими утилитами не решается. Она очень неплохо решается через OGR через формат CSV (на сайте есть статья - ORG2OGR SHp <-> CSV) или минимальным программированием через MIF/MID.
Дано: карта с точками (Объект-точка, долгота, широта).
Задача: уметь отображать на карте линии, соединяющие любые 2 точки, а в общем случае любые наборы из 2 точек.
Получить таблицу с наборами из 2 точек например смогу с помощью SQL запроса.
Например:
Линия1 соединяет точку Начало1 и точку Конец1.
Линия2 соединяет точку Начало2 и точку Конец2 (если SQL запрос вернул не одну, а две строки).
...
ЛинияN соединяет точку НачалоN и точку КонецN (если SQL запрос вернул N строк).
Поиск (OGR, ORG2OGR) по сайту не дал результатов. можете плиз ткнуть прямо носом?
А во что выливается минимальное программирование через MIF/MID? Обойдусь ли имеющимся набором: голый MapInfo + я надеюсь светлая головушка .
MapBasic установить нет возможности.
- Вложения
-
- Вот пример, когда:
- в результатах несколько линий;
- в результатах начальная точка одна и та же (синий круг), а конечные точки разные (никак не показаны на карте). - Снимок.JPG (37.14 КБ) 8045 просмотров
- Вот пример, когда:
Последний раз редактировалось evgenius 20 июл 2015, 12:32, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 4044
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1049
- Ваше звание: программист
- Откуда: Казань
Re: Создание полилинии из данных (Map Cad)
ни Мапинфо, ни Мапвасик вообще не нужны, MIF/MID текстовый формат. Берется любой скриптовый язык, и вперед, вот пример сборки полигонов, сделанный на R по просьбе одного из участников форума, полигон опознается пол повторению координат. Для линий все аналогично, заголовок создайте в Мапинфо, или экспортируйте какой-нибудь линейный файл в нужной проекции. Написано все "в лоб" для понятностиevgenius писал(а):А во что выливается минимальное программирование через MIF/MID? Обойдусь ли имеющимся набором: голый MapInfo + я надеюсь светлая головушка .
MapBasic установить нет возможности.
Код: Выделить всё
p<-read.table("E:/GIS-lab/MakePolygon/data.txt",header=FALSE)
names(p)<-c("X","Y")
fn.mif<-"E:/GIS-lab/MakePolygon/pf.mif"
fn.mid<-"E:/GIS-lab/MakePolygon/pf.mid"
write("Version 300",file=fn.mif)
write("Charset \"Neutral\"",append=TRUE,file=fn.mif)
write("Delimiter \",\"",append=TRUE,file=fn.mif)
write(" CoordSys Earth Projection 8, 104, \"m\", 39, 0, 0.9996, 500000, 0",append=TRUE,file=fn.mif)
write("Columns 1",append=TRUE,file=fn.mif)
write(" ID Integer",append=TRUE,file=fn.mif)
write("Data",append=TRUE,file=fn.mif)
cur.ID <-1
cur.pos<-1
found <-FALSE
first <-TRUE
done <-FALSE
while(!done) {
for(i in (cur.pos+1):nrow(p)) {
if(sum((p[i,]-p[cur.pos,])^2) < 0.01^2) {
found=TRUE
break
}
}
if(!found) stop("Failed to found endpoint")
sbuf="Region 1"; write(sbuf,append=TRUE,file=fn.mif)
sbuf=sprintf("%5d",i-cur.pos+1); write(sbuf,append=TRUE,file=fn.mif)
for(ii in cur.pos:i) {
sbuf=sprintf("%.5f %.5f",p$X[ii],p$Y[ii]); write(sbuf,append=TRUE,file=fn.mif)
}
sbuf=sprintf("%d",cur.ID); write(sbuf,append=!first,file=fn.mid)
first<-FALSE
cur.ID<-cur.ID+1;
cur.pos<-i+1;
if(cur.pos >= nrow(p)) break
}
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Создание полилинии из данных (Map Cad)
Солнце, воздух, ...м укреляют организм. Я не понял причем тут SQL и "вернул сколько то точек". Вам надо еще анализ какой то выполнять к этому всему на количество точек из одной вершины?
Но это все побоку, читаем хелп Mapinfo:
И что это значит? Это значит, что это функция, которую можно использовать в SQL запросах на присвоение (обновление) внути Mapinfo в окне MapBasic. Набор линий для каждой строки, где есть пара координат (начало;конец) будет создан автоматически. Единственное отличие от команды меню "обновить колонку" состоит в том, что в команде меню нельзя выполнить присвоение полю Obj, которое хранит геометрическую информацию.
В общем случае, набор команд для таблицы, где есть x1,y1,x2,y2, как координаты начала и конца линии, выглядит так:
PS
Для больших расстояний, а редко кто использует долготу/широту на 100 метрах, искажения в длине линий, построенных по 2 точкам, могут оказаться очень существенными.
PSS
OGR статья: "Конвертация данных из CSV в SHP и обратно с OGR" раздел "Геометрии в формате WKT"
Но это все побоку, читаем хелп Mapinfo:
Код: Выделить всё
CreateLine( ) function
Purpose
Returns an Object value representing a line. You can call this function from the MapBasic window in MapInfo Professional.
Код: Выделить всё
Syntax
CreateLine( x1, y1, x2, y2 )
x1 is a float value, indicating the x-position (for example,) of the line's starting point.
y1 is a float value, indicating the y-position (for example, Latitude) of the line's starting point.
x2 is a float value, indicating the x-position of the line's ending point.
y2 is a float value, indicating the y-position of the line's ending point.
Return Value
Object
Код: Выделить всё
Open Table "Routes"
Insert Into routes (obj)
Values (CreateLine(-72.55, 42.431, -72.568, 42.435))
В общем случае, набор команд для таблицы, где есть x1,y1,x2,y2, как координаты начала и конца линии, выглядит так:
Код: Выделить всё
Open Table "Routes" As Routes
Set Coordsys Table Routes
Insert Into Routes (obj)
Values (CreateLine(x1, y1, x2, y2))
Для больших расстояний, а редко кто использует долготу/широту на 100 метрах, искажения в длине линий, построенных по 2 точкам, могут оказаться очень существенными.
PSS
OGR статья: "Конвертация данных из CSV в SHP и обратно с OGR" раздел "Геометрии в формате WKT"
-
- Интересующийся
- Сообщения: 17
- Зарегистрирован: 17 июл 2015, 15:44
- Репутация: 0
Re: Создание полилинии из данных (Map Cad)
Всем доброго и спасибо всем откликнувшимся.
Дырку с отображением наборов линий заткнул с помощью mid/mif.
Способ приглянулся своей относительной простотой (хотя пока формирую файлы с помощью excel без скриптинга) и возможностью наделять линии дополнительной инфо, типа Имя, Цвет отображения линии и ее толщина.
При использовании запросов с ходу не разобрался как вставлять дополнительную инфо, т.к. запрос в общем возвращает неколько типов линий, которые на карте нужно помечать.
Конвертацию данных из CSV в SHP и обратно с OGR конечно посмотрел, но не осилил. Это в QGIS делается? У меня пока только Мапинфа без мапвасика.
Дырку с отображением наборов линий заткнул с помощью mid/mif.
Способ приглянулся своей относительной простотой (хотя пока формирую файлы с помощью excel без скриптинга) и возможностью наделять линии дополнительной инфо, типа Имя, Цвет отображения линии и ее толщина.
При использовании запросов с ходу не разобрался как вставлять дополнительную инфо, т.к. запрос в общем возвращает неколько типов линий, которые на карте нужно помечать.
Конвертацию данных из CSV в SHP и обратно с OGR конечно посмотрел, но не осилил. Это в QGIS делается? У меня пока только Мапинфа без мапвасика.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Создание полилинии из данных (Map Cad)
Спасибо за спасибо. Но вот для тех, кто будет искать свои ответы:evgenius писал(а):У меня пока только Мапинфа без мапвасика.
1. Не бывает мапинфо без мапбасика. Вся мапинфо - это графическая оболочка над командами мапбасика. Какое то время тому назад, даже существовал продукт по имени Mapinfo Runtime, который выполнял все команды без графической оболочки. Так что окно Mapbasic'а в которое можно вставлять команды на этом языке, и что самое главное увидеть во что превращаются команды из Меню и кнопок, есть всегда. Вставленные в него команды приводят к тем же результатам, что движения руками. Единственно, что не поддерживается в этом окне - это все команды выбора и циклов.
2. Mapbasic уже давно бесплатен и входит в любой диск с Mapinfo, если же его нет в комплекте, то найти его не большая проблема.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей