Как облегчить рутинную работу подсчета координат?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Вертикальные решения на базе AutoCAD > Как облегчить рутинную работу подсчета координат?

Как облегчить рутинную работу подсчета координат?

Ответ
Поиск в этой теме
Непрочитано 20.02.2011, 22:37 #1
Как облегчить рутинную работу подсчета координат?
rassom
 
Оросительные системы
 
Регистрация: 02.07.2010
Сообщений: 166

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

Вложения
Тип файла: doc 5000.doc (115.0 Кб, 99 просмотров)


Последний раз редактировалось rassom, 20.02.2011 в 22:55.
Просмотров: 3713
 
Непрочитано 20.02.2011, 23:21
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,405


А в заголовке темы название и версию ПО не указать?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.02.2011, 23:39
#3
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Загружаем данные в Access с такой структурой:
таблица.1
n(номер точки) x y

Данные от оси
n(номер точки на оси) n2(номер точки на поперечнике) L Z or(орентация - слева или справа, используй boolean)

Первую таблицу надо объединить саму с cабой n=n+1
Потом полученную таблицу объединить с данными по оси

P.S. Если хочешь подробно - скинь данные (в количестве несколько 10 строк)
trir вне форума  
 
Автор темы   Непрочитано 21.02.2011, 12:16
#4
rassom

Оросительные системы
 
Регистрация: 02.07.2010
Сообщений: 166


Цитата:
Сообщение от trir Посмотреть сообщение
Если хочешь подробно - скинь данные (в количестве несколько 10 строк)
Если Вас не затруднит, вот данные по одной трассе:
Вложения
Тип файла: rar Данные.rar (9.8 Кб, 62 просмотров)
rassom вне форума  
 
Непрочитано 21.02.2011, 21:45
#5
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Тяжёлый случай:
1. Координаты X < 0 ???
2. Пикет 1+000.00 !!! - надо писать 1000,
потом: "Формат ячеек..."\"(все форматы)"
в "Тип:" пишем "0+000.00" - в итоге в ячейке число и отображается как надо.
=ЗНАЧЕН(ЗАМЕНИТЬ(E2;2;1;""))
3. Как рассчитать последнюю точку?

P.S. Откуда у тебя такие странные данные?
Вложения
Тип файла: zip Данные.zip (962.7 Кб, 53 просмотров)
trir вне форума  
 
Автор темы   Непрочитано 22.02.2011, 02:20
#6
rassom

Оросительные системы
 
Регистрация: 02.07.2010
Сообщений: 166


Цитата:
Сообщение от trir Посмотреть сообщение
1. Координаты X < 0 ???
Да, они реальные.
Цитата:
Сообщение от trir Посмотреть сообщение
3. Как рассчитать последнюю точку?
Вы правы, просто я забыл об этом, S для нее равно S для предпоследней точки. А формулы подсчета координат меняется на X=X1+L*(Y2-Y1)/S и Y=Y1-L9X2-X1)/S, т.е для последней точки формула меняется и как это учесть в запросе?
Цитата:
Сообщение от trir Посмотреть сообщение
P.S. Откуда у тебя такие странные данные?
Данные нормальные, а что именно не нравится?. X<0 потому, что объект находится на ближнем востоке.. Кстати на чертеже у Вас восток (X) и север (Y) поменялись местами, поэтому наверно получилась странная трасса.
rassom вне форума  
 
Непрочитано 22.02.2011, 05:03
#7
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


1. В геодезии X не может быть < 0, в данном случае наверно неверно выбрана проекция.
2. Обычно с поля приходят данные в виде угол и расстояния, не может быть прямого угла, разве что в виде исключения или сразу координаты. А эти данные видно уже вторичные.
Вложения
Тип файла: zip Данные.zip (973.8 Кб, 59 просмотров)

Последний раз редактировалось trir, 22.02.2011 в 05:34.
trir вне форума  
 
Автор темы   Непрочитано 24.02.2011, 20:48
#8
rassom

Оросительные системы
 
Регистрация: 02.07.2010
Сообщений: 166


Цитата:
Сообщение от trir Посмотреть сообщение
Вложения
Тип файла: zip Данные.zip (973.8 Кб, 7 просмотров)
trir, за Ваш труд конечно спасибо, но давайте доведем дело до конца. Дело в том, что у вас Запрос1 в столбце S1 возвращает значения РК из таблицы points начиная с id2 и в итоге получилось 30 строк вместо 31. По условиям задачи тут мы должны получить те же 31 строк, но S1 (т.е. РК) должен сдвинутся на одну строку вверх, тогда последняя строка у нас получается пустой и в нее должна записаться та же запись, что и в 30-й строке. Если не очень понятно, пожалуйста еще раз просмотрите условия задачи. С уважением, rassom
rassom вне форума  
 
Непрочитано 24.02.2011, 21:18
#9
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Типа нет ПК0? Ну проглядел, просто надо везде поставить "LEFT JOIN".

Код:
[Выделить все]
SELECT p1.id, p1.X AS X1, IIf(IsNull(p2.X),p3.X,p2.X) AS X2, p1.Y AS Y1,
 IIf(IsNull(p2.Y),p3.Y,p2.Y) AS Y2, p1.PK AS S1, IIf(IsNull(p2.PK),p3.PK,p2.PK) AS S2
FROM (points AS p1 LEFT JOIN points AS p2 ON p1.id = p2.id-1) 
                   LEFT JOIN points AS p3 ON p1.id-1 = p3.id;
trir вне форума  
 
Автор темы   Непрочитано 24.02.2011, 21:58
#10
rassom

Оросительные системы
 
Регистрация: 02.07.2010
Сообщений: 166


Цитата:
Сообщение от trir Посмотреть сообщение
надо везде поставить "LEFT JOIN".
Да, теперь Запрос1 получился как надо. Есть небольшое уточнение, сам только сейчас заметил, у нас получился в Запрос1 в 31-й строке столбца S2 значение S1 30-й строки. А надо было, чтобы в 31-й строке каждый из S1 и S2 повторяли свои значения из 30-й строки. Я думаю, что тепер это сделать легче, помогите пожалуйста.
rassom вне форума  
 
Непрочитано 24.02.2011, 22:08
#11
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Цитата:
Сообщение от rassom Посмотреть сообщение
А надо было, чтобы в 31-й строке каждый из S1 и S2 повторяли свои значения из 30-й строки.
Зачем?
trir вне форума  
 
Автор темы   Непрочитано 24.02.2011, 22:26
#12
rassom

Оросительные системы
 
Регистрация: 02.07.2010
Сообщений: 166


Цитата:
Сообщение от trir Посмотреть сообщение
Зачем?
У вас в формуле подсчета координат в Запрос2 участвует S2, а надо было S, который равен (S2-S1). Поэтому если в Запрос1 в последних 2-х строк S1,S2 повторяется, как раз получается два одинаковых S для расчетной таблицы (Запрос2).
rassom вне форума  
 
Непрочитано 24.02.2011, 22:38
#13
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Типа так:

Код:
[Выделить все]
SELECT Запрос1.*, pop.L, IIf(S1<S2,pop.Orent,Not pop.Orent) AS or1, 
pop.id AS id2, IIf([or1],([x1]-([L]*(([Y2]-[Y1])/Abs([S2]-[s1])))),
                         ([x1]+([L]*(([Y2]-[Y1])/Abs([S2]-[s1]))))) AS nx, 
IIf([or1],([y1]+([L]*(([x2]-[x1])/Abs([S2]-[s1])))),
          ([y1]-([L]*(([x2]-[x1])/Abs([S2]-[s1]))))) AS ny, pop.Z
FROM Запрос1 INNER JOIN pop ON Запрос1.S1 = pop.PK;
trir вне форума  
 
Автор темы   Непрочитано 24.02.2011, 23:01
#14
rassom

Оросительные системы
 
Регистрация: 02.07.2010
Сообщений: 166


Цитата:
Сообщение от trir Посмотреть сообщение
SELECT Запрос1.*
А Запрос1 не будем подправлять, как я говорил в предыдущем посте?
rassom вне форума  
 
Непрочитано 25.02.2011, 05:15
#15
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


А зачем?
1. Используя abs - то есть модуль, нам совершенно не важен порядок S1 и S2
2. Условие S1 < S2 "разворачивает" формулы для расчёта nx, ny

Ха, хорошенькие исходные данные:
Ось : Поперечник
0+557.05 : 0+557.04
1+519.91 : 1+519.84

Можно обойтись без "Orent", если принять, что для точек слева L<0
Новый запрос2:
Код:
[Выделить все]
SELECT Запрос1.*, IIf([S1]<[S2],[nL],-1*[nL]) AS L, npop.id,
 ([x1]-([L]*(([Y2]-[Y1])/Abs([S2]-[s1])))) AS nx,
 ([y1]+([L]*(([x2]-[x1])/Abs([S2]-[s1])))) AS ny, npop.Z
FROM npop LEFT JOIN Запрос1 ON npop.PK = Запрос1.S1;

Последний раз редактировалось trir, 27.02.2011 в 04:59.
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Вертикальные решения на базе AutoCAD > Как облегчить рутинную работу подсчета координат?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как сделать программку для подсчета координат и расстояний Velik84 Программирование 12 02.06.2009 22:01
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47
управление системой координат Автокад из Делфей Владимир В Программирование 12 27.04.2005 09:54