Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 16 окт 2018 23:32

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 293 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 20  След.
Автор Сообщение
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 16 апр 2011 16:26 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 310
Откуда: Ужгород
Интересно, корректно ли работает шифрование?!!!
грохнул шаблон при попытке защитится, размер файла стал "ноль"
благо бекаплюсь, хотя кое-что исчезло без следа(почти вся работа с диалоговым окном) Изображение
да.. повторение-мать учения.. тут прийдется лучше познать диалоговые окна...чаще бекапится!

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Последний раз редактировалось kukin 16 апр 2011 20:45, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 16 апр 2011 19:23 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 310
Откуда: Ужгород
В данный момент диалоговым окном заносится такая информация:
- Название документа являющийся основой приобретения (ComboBox)
- Данные по договору: №(Edit), дата(DateEdit)
- Описание размещения земельного участка (в какой части населенного пункта )
- Периметр участка(Edit)
- Данные про недвижимость, и документы на эту недвижимость(ComboBox, поскольку или нет недвижимости, либо описание с включенным csDropDown)


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

В XML существует слой "Обмеження", тем самым пункт первый можно проверить наличием этого "слоя".
Тип ограничения, и суммарную площадь ограничения по каждому типу можно провести по коду.
(тут стоит подумать над функцией, и ссылкой на текстовый файл с кодами предприятий-у меня он уже существует)
_________________________________________________
Пардон у ХМЛ, есть прямое описание ограничения, даже по идентификационному ничего рыскать не надо!
Зато полная "лажа" с площадью. _________________________________________________
тут здорово надо покопаться в:
-Boundarytype Boundary Межа зони обмеження
-InternalsБлок опису внутрішніх полігонів зони обмеження
-Boundarytype BoundaryМежа внутрішнього полігона зони обмеження

Те-же "яйца", что и с периметром.
Надо бы встроенную функцию!
______________________________________________________
или решать "буфером обмена"

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Последний раз редактировалось kukin 13 сен 2013 19:23, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 17 апр 2011 11:23 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 310
Откуда: Ужгород
Еще один камушек в огород Setup.ini:
Зачем создавать список склонений, если склонение работает с женскими именами: "міська рада", "сільська рада" "адміністрація"? :shock:
надо всего [ROP(FILE('Setup.ini','RepНазва(Сільрада)'))]
правда в ini пришлось сделать исправдения(добавив 10 знаков вместо 8, чтоб наверняка знать "в межах-за межами"):
RepНазва(Сільрада)=SEF(LocID,'Rada.txt')
DMTНазва(Сільрада)=SEF(CUT(1,10,P[ID106]),Rada.txt)


где в коде репорта добавляется переменная
LocID:=Copy(CadNumberClear,1,10);

Список Rada.txt подается в таком виде:
...
2111000000 Чопська міська рада
2124855500 Ужгородська районна державна адміністрація
2124855501 Середнянська сільська рада
2124880300 Ужгородська районна державна адміністрація
2124880301 Баранинська сільська рада
2124880302 Баранинська сільська рада
2124880303 Баранинська сільська рада
2124880304 Баранинська сільська рада
....


Все это взято с работающего шаблона (2008г.)

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 17 апр 2011 14:16 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 310
Откуда: Ужгород
В пояснительную записку надо сделать описание ограничений и сервитутов.
Путь к ограничению: /UkrainianCadastralExchangeFile/InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Restrictions
В шаблоне есть код для ограничений, но он для таблички, и я решил в него не влазить.
сделал так:
if XMLMode //вывод ограничений
then begin
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Restrictions')//проверяем наличие ограничений
then begin
RestrCount:=NodesCount(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Restrictions','RestrictionInfo');
//проверяем сколько сушествует ограничений
Restrictions:='На використання земельної ділянки встановлені такі обмеження (обтяження), сервітути: ';// присваеваем переменной ограничений значение с ограничением
end;
if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Restrictions')
//если усть ограничения
then begin
Begin
for I:=1 to RestrCount do
//начинаем перебор по ограничениям
Restrictions:=Restrictions+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Restrictions/RestrictionInfo/RestrictionName')+' площею____га.'+IIF(I<>RestrCount,', ','');//присваеваем переменной с ограничением описание ограничения и текст её площади
end;
end
else
Restrictions:='На використання земельної ділянки обмеження (обтяження), сервітути не встановлені.';
//если ограничения нет, присваеваем отсуцтвие ограничения
Edit2.text:=Restrictions //запихиваем все это в диалоговое окно
end;
В теле отчета за это отвечает переменная [Edit2.text]

Может кто подскажет, есть ли перенос слов в Edit? Или надо другие элементы формы использовать, тогда какие?

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 17 апр 2011 14:50 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 310
Откуда: Ужгород
Purpose
Цільове призначення (використання) земельної ділянки
Текстовий (згідно із документацією із землеустрою)
и менеджер обменных файлов "намекает", мол он "тупа" текстовый(без номера), указывая на ошибку!
надо нормал и экспликацию поправить :wink:
________________________________________
экспликация исправится легко ,а вот нормал надо пофиксить

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 09:44 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1976
Откуда: Vinnitsa
Новый классификатор целевых назначений введен 15.02.2011, то есть позже Наказа 573, использование нового классификатора неизбежно :). И в схему и в Менеджере будут внесены исправления/изменения.

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 11:16 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1976
Откуда: Vinnitsa
Площадь участка:
XPath('InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelMetricInfo/Area/Size')

Периметр участка:
используем функцию GetPerimeter из вложенного примера
function GetPerimeter(ParcelNumber:Integer; IncludeInternals:Boolean):Double;
Первый параметр - номер участка, пока всегда равен 1. Вторым параметром задаем включать или не включать в подсчет периметра внутренние контура.


Вложения:
AreaPerimeter.zip [1.4 Кб]
Скачиваний: 257

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 12:02 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 310
Откуда: Ужгород
За примерчик огромное спасибо, будем пробовать!
коменты бы в примерчик :roll:
Dmitry_Zolotar писал(а):
Площадь участка:
XPath('InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelMetricInfo/Area/Size')

а как быть с ограничениями, там ссылочки не работают?

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 13:06 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1976
Откуда: Vinnitsa
Мда, в ограничениях площади действительно нет, но тут как бы по схеме их не предусмотрено :)
В участках, угодьях, аренде, субаренде площадь присутствует, а в ограничениях нет
Что-нибудь придумаем, не стоит переживать.

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 14:38 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 310
Откуда: Ужгород
попытался расписать
const
ParcelsPath='InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels';
// непонятно для чего
PerimeterFormat='0.00';//формат переменной
var AreaStr,PerimeterStr:String;//задаём типы переменных
N:Integer;

function GetPerimeter(ParcelNumber:Integer; IncludeInternals:Boolean):Double;
//название самой функции
var R,P:Double; Path:String; ULID,LinesCount,LineCount:Integer; //переменные
begin
R:=0.0;
//переменная которая в себе будет нести периметр
Path:='InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo['+IntTostr(ParcelNumber)+']'; //путь к дилянке с номером ParcelNumber
LinesCount:=NodesCount(Path+'/ParcelMetricInfo/Externals/Boundary','Lines'); //количество наружных блоков линий
for I:=1 to LinesCount do //перебор от одного до количества линий
begin
LineCount:=NodesCount(Path+'/ParcelMetricInfo/Externals/Boundary/Lines['+IntToStr(I)+']','Line');
//количество наружных линий текущего блока
for J:=1 to LineCount do //перебор по
begin
ULID:=StrToInt(XPath(Path+'/ParcelMetricInfo/Externals/Boundary/Lines['+IntToStr(I)+']/Line['+IntToStr(J)+']'));
//подбор текущего номера линий
P:=StrToFloat(XPath('InfoPart/MetricInfo/Polyline/PL['+IntToStr(ULID)+']/Length')); //текущая длина линии
R:=R+P;//сумма длин линий
end;
end;
if IncludeInternals then if IsNodeExists(Path+'/ParcelMetricInfo/Externals/Internals/Boundary') then
//если существует внутренняя граница
begin
LinesCount:=NodesCount(Path+'/ParcelMetricInfo/Externals/Internals/Boundary','Lines');
//количество внутренних блоков линий
for I:=1 to LinesCount do//перебор от первой до последней линии
begin
LineCount:=NodesCount(Path+'/ParcelMetricInfo/Externals/Internals/Boundary/Lines['+IntToStr(I)+']','Line');
// количество внутренних линий текущегоблока
for J:=1 to LineCount do //перебор по внутренним линиям
begin
ULID:=StrToInt(XPath(Path+'/ParcelMetricInfo/Externals/Internals/Boundary/Lines['+IntToStr(I)+']/Line['+IntToStr(J)+']'));
//подбор текущего номера линии
P:=StrToFloat(XPath('InfoPart/MetricInfo/Polyline/PL['+IntToStr(ULID)+']/Length')); //текущая длина линии
R:=R+P; //сумма всех линиий
end;
end;
end;
Result:=R;
//вывод результата функции сумой всех длин линий
end;
begin
N:=1;
AreaStr:=XPath('InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo['+IntToStr(N)+']/ParcelMetricInfo/Area/Size');
//площадь по пути..
PerimeterStr:=FormatFloat(PerimeterFormat,GetPerimeter(N,True)); //вывод периметра с до 2 знаков после нуля в отчет
end.
но почему то функция у меня не работает :?:
а площадь считает..


Вложения:
.JPG
.JPG [ 8.28 Кб | Просмотров: 6294 ]

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 15:33 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1976
Откуда: Vinnitsa
Проблема в разделителе целой и дробной части, решается использованием функции AnyStrToFloat.
Вместо
P:=StrToFloat(XPath('InfoPart/MetricInfo/Polyline/PL['+IntToStr(ULID)+']/Length')); //текущая длина линии
поставить
P:=AnyStrToFloat(XPath('InfoPart/MetricInfo/Polyline/PL['+IntToStr(ULID)+']/Length')); //текущая длина линии
и добавить функцию AnyStrToFloat из, допустим, экспликации.

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 15:58 
Гуру
Гуру

Зарегистрирован:
27 мар 2008 00:23
Сообщения: 185
извините за оффтоп. а будут ли такие же шаблоны в Reports для XML как и для in4, или придется самому их писать?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 16:14 
Гуру
Гуру

Зарегистрирован:
04 дек 2004 19:41
Сообщения: 1028
Откуда: г. Харьков
Guevara писал(а):
а будут ли такие же шаблоны в Reports для XML как и для in4, или придется самому их писать?

Вот как раз этим тут парни и занимаются, какой бы тарабарщиной это не казалось. ;)
Точнее, для начала, учат программу извлекать инфу из xml полей.


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 17:13 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 310
Откуда: Ужгород
Dmitry_Zolotar писал(а):
Проблема в разделителе целой и дробной части, решается использованием функции AnyStrToFloat.
Вместо
P:=StrToFloat(XPath('InfoPart/MetricInfo/Polyline/PL['+IntToStr(ULID)+']/Length')); //текущая длина линии
поставить
P:=AnyStrToFloat(XPath('InfoPart/MetricInfo/Polyline/PL['+IntToStr(ULID)+']/Length')); //текущая длина линии
и добавить функцию AnyStrToFloat из, допустим, экспликации.

Поучительно, на другой "машине" регианальніе настройки я правил, и с разделителем "точка" все работает на ура.
Одно поле из диалогового(чуть язык не сломал) окна пропало
Спасибо, за подсказку на функцию.

Вот тут дело дошло и до экспликации.
Дело в том, что в техничке, в пояснительной записке пишется экспликация земель как в ХМЛ файле, тобиш которая будет после "выдачи акта"(и она уже слизана с готового шаблона).
А в экспликацию которую "дает" зем. отдел заносятся данные которые были, и они не всегда сходятся с теми, которые будут.
Одним словом идея такова:
- Растрепать по кусочкам экспликацию Дмирия (чтоб в ней разобратся)
- Добавить в неё переменные из диалогового окна (можно ли вносить переменные из диалоговых окон перед обработкой кода?)
- создать вторую экспликацию от Зем.отдела (кстати, полезно продвинутым зем.отделам)
Вот такой страшнейший план я задумал Изображение

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: XML против Reports
СообщениеДобавлено: 18 апр 2011 20:28 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
06 фев 2008 18:09
Сообщения: 310
Откуда: Ужгород
В общем полностью разобратся в коде вряд получится.
Но наверно это и не потребуется, нам важна процедура AddMemoToBody
Я не собираюсь делать шаблон на "зміну цільового призначення", по этому будут меняться только поля Номер рядка, Власники землі, землекористувачі .., Шифр рядка, возможно Код цільового використання. Вот эти поля отвечают за занесение в столбцы А,Б,В нужных нам переменных:
case StringPart(SL[Col],1,chr(9)) of
'А':if XMLMode
then Memo.Text:=SEF(XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Proprietors/ProprietorInfo/ProprietorCode'),'KZ.txt')
else Memo.Text:=SEF(Param('KZ',Row),'KZ.txt');
'Б':begin
if XMLMode
then Memo.Text:=PrepareXMLNMList(',')
else Memo.Text:=' '+Param('NM',Row);
HAlign:=haLeft;
end;
'В':if XMLMode
then Memo.Text:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/Proprietors/ProprietorInfo/ProprietorCode')
else Memo.Text:=Param('KZ',Row);
'Г':if XMLMode
then Memo.Text:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/CategoryPurposeInfo/Purpose')
else Memo.Text:=Param('CV',Row);
'02':begin
if XMLMode
then Memo.Text:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelMetricInfo/Area/Size')
else begin
Memo.Text:=Param('AS',Row);
if Areas[(Row-1)*SL.Count+Col]<>AnyStrToFloat(Param('AS',Row))
then Font.Color:=clRed;

Дмитрий, пожалуйста поверхностно опешите алгоритм последовательности выполнения процедур и функций, чтоб решить как создать вторую форму 6-зем, её "клон" с измененными memo.
Как создать "клон", чтоб небыло повторяющихся имен?
Хотел узнать, можно ли не лазить в код, а "переназначать" текст клону, через диалоговое окно, по имени создаваемого memo?

_________________
ГрызЁм гранит науки, и внедряем осколки в массы!


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 293 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 20  След.

Часовой пояс: UTC + 2 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB