Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 10 ноя 2024 19:49

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




Начать новую тему Ответить на тему  [ Сообщений: 211 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 15  След.
Автор Сообщение
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 18 дек 2016 02:25 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
Пропоную скрипт для "тихого" перетворення координат. Використовується формат PROJ4 https://trac.osgeo.org/proj/wiki/GenParms (один з найпоширенiших форматiв для опису систем координат).
Застосовується функцiя @DLLExec

19.12.2016 Крiм Transfer Добавлено функцiї
Grad2Str (45.123456789 = 45°07'24)
Str2Grad (45°07'24 = 45.123456789)
Працює з датумами з файлу Datums.ini (напр. GeoGed.Transfer 'SK63(1)' 'WGS84' '$PntList'). Тестувалось на SK63, SK42 та WGS84.

27.12.2016 У зв'язку з рiзними значеннями параметрiв 7-ми параметричного перетворення змiнено читання з файлу Datums.ini (завантажуйте оновлений файл GeoGed.dll)
Добавлена ф-цiя GetPublicMapInfo (подiбна стандартнiй)
...потрiбна була iнформацiя про грунти (приклад додаю в наступному повiдомленнi).

17.01.2017
1. Добавлено функцiю GetUrlContents для отримання даних з URL сторiнки
2. Ф-цiя Transfer працює зi складними контурами (значення -2684354.56 не трансформуються)

Код:
$Count=@MapCount
@if $Count=0 @Break
$Sel=@Map.SelCount
@if $Sel=0 then @break Виберiть елементи
;Parameters SC 63(1)
$source=+proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=1300000 +y_0=-9214.688 +ellps=krass +towgs84=25.0,-141.0,-78.5,0,-0.35,-0.736,0.0 +no_defs
;Parameters WGS64
;$target=+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
;Parameters SK42(6)
$target=+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 +ellps=krass +towgs84=25.0,-141.0,-78.5,0,-0.35,-0.736,0.0 +no_defs
$Obj=0
%Cycle
$Obj=@Map.NextSelected $Obj
$PntCnt=@Map.Object[$Obj].Count
$PntList=
%MakeList
$Pnt=@Map.Object[$Obj].Point[$PntCnt]
$PntList=$Pnt $PntList
$PntCnt=$PntCnt-1
@if $PntCnt>0 then @goto %MakeList
;
$Str=@DLLExec GeoGed\GeoGed.Transfer '$source' '$target' '$PntList'
$Res=@StringPart 1,$str
@if $Res>0 then @goto %Process
; обробка помилки
;
@Dialog.Message $Res
@Goto %End
%Process
$PntCnt=$Res
$PntList=@Calc Replace(Delete("$Str",1,Pos(",","$Str")),",",";")
%DrawEem
$Pnt=@StringPart $PntCnt;$PntList
$Pnt=@DequoteText $Pnt
; перевiрка, чи не розрив (складний полiгон)
$CPnt=@Map.Object[$Obj].Point[$PntCnt]
$CPntX=@StringPart 1 $CPnt
@If $CPntX=-2684354.56 then @goto %SkipPnt
@Map.Object[$Obj].Point[$PntCnt] $Pnt
%SkipPnt
$PntCnt=$PntCnt-1
@if $PntCnt>0 then @goto %DrawEem
$Sel=$Sel-1
@if $Sel>0 then @goto %Cycle
%End


16.10.2017
Добавлено ряд нових функцiй в бiблiотеку GeoGed (Get_Release, CodePageConvert, UrlEncode, Preg_Match, DialogCheckListBox). Функцiя Get_Release виводить iнформацiю по використанню цих функцiй.
25.07.2018
Добавлено функцiї PointInPoly (положення точки вiдносно контуру) та GetPolyType (визначення типу полiгону).
Код:
$Obj=@Map.SelectedObject
$Poly=@Map.GetObjectCoordinates $Obj
$Res=@DLLExec GeoGed\GeoGed.GetPolyType 0.001 $Poly

Код:
@Dialog.WaitBox Виберiть полiгон
$Obj=@Map.SelectedObject
@Map.DeselectAll
@Dialog.WaitBox Виберiть точку для визначення її положення вiдносно полiгону
$Pnt=@Map.SelectedObject
$Pnt=@Map.Object[$Pnt].Point[1]
$Poly=@Map.GetObjectCoordinates $Obj
$Param=$Pnt 0,001 $Poly
$Res=@DLLExec GeoGed\GeoGed.PointInPoly $Param


Вложения:
Комментарий к файлу: GeoGED 2.3 Lite
20.02.20 у зв'язку iз введенням в дiю нової версiї сайту map.land.gov.ua внесено змiни в функцiю GetPublicMapInfo

GeoGed_2.3.zip [586.36 Кб]
Скачиваний: 1124
Transfer.tlb [3.98 Кб]
Скачиваний: 1872

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.


Последний раз редактировалось Руслан Пархуць 01 апр 2020 21:00, всего редактировалось 16 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 27 дек 2016 16:25 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
Скрипт для отримання даних про грунти (в даному випадку), або iншої iнформацiї з публiчної карти (необхiдно бiблiотеку GeoGed з попереднього повiдомлення).
Код:
$Count=@MapCount
@if $Count=0 @Break
$Sel=@Map.SelCount
@if $Sel=0 then @break Виберiть елементи
$Obj=0
$Obj=@Map.NextSelected $Obj
$Pnt=@Map.Object[$Obj].Center
$Res=@DLLExec GeoGed\GeoGed.Transfer 'SK63(1)' 'WGS84' '$Pnt'
$Cnt=@StringPart 1,$Res
@if $Cnt>0 then @goto %NextStep
;
@Goto %End
%NextStep
$Pnt=@StringPart 2,$Res
$target=+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +no_defs
$Res=@DLLExec GeoGed\GeoGed.Transfer 'WGS84' '$target' '$Pnt'
$Cnt=@StringPart 1,$Res
@if $Cnt>0 then @goto %Process
;
@Goto %End
%Process
$Pnt=@StringPart 2,$Res
$Res=@DLLExec GeoGed\GeoGed.GetPublicMapInfo $Pnt
; $Res данi в Text
@Text.Text $Res
; якщо є данi про грунти (секцiя soil)
$Pos=@Text.IndexOf soil
@if $Pos=0 @goto %End
; витираємо зайвi елементи списку (формуємо новий $Res) 
@Text.Delete 1-$Pos
; шукаємо секцiю Шифр:
$Pos=@Text.IndexOf name_g_id
@if $Pos=0 @goto %End
; данi секцiї в рядку +1
$Pos=$Pos+1
$SoilsV=@Text.Line[$Pos]
; те саме, але для секцiї Назва:
$Pos=@Text.IndexOf name_g_txt
@if $Pos=0 @goto %End
$Pos=$Pos+1
$SoilsN=@Text.Line[$Pos]
; записуємо знайдену iнф. в параметри 1 та 2 об'єкту
;@Map.Object[$Obj].Parameter[1] $SoilsV
;@Map.Object[$Obj].Parameter[2] $SoilsN*
@Dialog.Message $SoilsV - $SoilsN
@Goto %End
%Skip
@Dialog.Message Не знайдено iнформацiї
%End


Приклад використання функцiй GetUrlContents для отримання даних про грунтовий покрив iз сайту НГО та zakon.rada.gov.ua
Код:
;--------------------------------------------------------------
; (вихiдна система координат СК-63(1 зона)
;--------------------------------------------------------------
$Count=@MapCount
@if $Count=0 @Break
$Sel=@Map.SelCount
@if $Sel=0 then @break Виберiть елементи
$Obj=@Map.NextSelected
$Pnt=@Map.Object[$Obj].Center
$Res=@DLLExec GeoGed\GeoGed.Transfer 'SK63(1)' 'WGS84' '$Pnt'
$Cnt=@StringPart 1,$Res
@if $Cnt>0 then @goto %NextStep
@Goto %End
;
%NextStep
$Pnt=@StringPart 2,$Res
$target=+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +no_defs
$Res=@DLLExec GeoGed\GeoGed.Transfer 'WGS84' '$target' '$Pnt'
$Cnt=@StringPart 1,$Res
@if $Cnt>0 then @goto %Process
@Goto %End
;
%Process
$Pnt=@StringPart 2,$Res
$X=@StringPart 1 $Pnt
$Y=@StringPart 2 $Pnt
; данi iз сайту НГО
$URL=https://ngo.land.gov.ua/uk/map/getGeoObjects
$Req=coords%5B%5D=$Y&coords%5B%5D=$X&layers%5B%5D=agrogroups&zoom=16
$Res=@DLLExec GeoGed\GeoGed.GetUrlContents $URL $Req
$Res=@DLLExec GeoGed\GeoGed.UrlDecode $Res
$Code=@DLLExec GeoGed\GeoGed.Preg_Match /class='right_menu_content-description'>([^<]*)/ $Res
; данi iз сайту zakon.rada.gov.ua (Порядок ведення Державного земельного кадастру)
$URL=https://zakon.rada.gov.ua/laws/show/1051%D0%B1-2012-%D0%BF/print
$Res=@DLLExec GeoGed\GeoGed.GetUrlContents $URL zakon.rada.gov.ua
$Res=@DLLExec GeoGed\GeoGed.CodePageConvert 65001 1251 $Res
$Name=@DLLExec GeoGed\GeoGed.Preg_Match /<p class=rvps12>$Code<\/p>.*?<p class=rvps14>([^<]*)/ $Res
;
@Dialog.Message Сайт НГО|Шифр: $Code|Назва: $Name
;

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.


Последний раз редактировалось Руслан Пархуць 20 фев 2020 15:53, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 27 дек 2016 22:02 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
voha писал(а):
Всім доброго дня.
Є в мене така задача - розділити збірний полігональний об'єкт на не збірні.
http://www.geosystema.net/forum/viewtopic.php?f=1&t=2809&p=38460#38458

Код:
$Count=@MapCount
@if $Count=0 @Break
$Sel=@Map.SelCount
@if $Sel=0 then @break Виберiть елементи
$Obj=0
; поточний ID
$Obj=@Map.NextSelected $Obj
; к-сть елементiв карти
$FCnt=@Map.Count
@ExecuteMenu spbSplit
; к-сть елементiв пiсля розподiлу
$RCnt=@Map.Count
;
@Map.SelectObject $Obj
@ExecuteMenu spbCombine
@Map.DeselectAll
@if $FCnt=$RCnt @Goto %End
$FCnt=$FCnt+1
%Cycle
$Obj=@Map.SelectObject $FCnt
@ExecuteMenu spbCombine
@Map.DeselectAll
$FCnt=$FCnt+1
@if $FCnt>$RCnt @Goto %End
@Goto %Cycle
%End


Вложения:
02.jpg
02.jpg [ 19.78 Кб | Просмотров: 81148 ]

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 17 янв 2017 15:36 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
vitjazzz писал(а):
Доброго дня Чи є на сьогоднішній день можливість провести транслітерацію строкового параметру, наприклад Іванов Іван Іванович, з кирилиці на латинь- Ivanov Ivan Ivanovic. Дякую!

GetUrlContents ф-цiя для отримання даних з URL сторiнки

Код:
$Name=Іванов Іван Іванович
$URL=http://translate.meta.ua/ajax/?sn=get_translit&direction=0&text_source=$Name
$Res=@DLLExec GeoGed\GeoGed.GetUrlContents $URL
@Dialog.Message $Name|$Res


Вложения:
Translit.tlb [2.78 Кб]
Скачиваний: 1792
01.jpg
01.jpg [ 8.79 Кб | Просмотров: 80513 ]

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 17 янв 2017 21:47 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 798
Откуда: Львівська область
от тільки даний сервіс робить транслітерацію за правилами не українського, а російського правопису.
беріть якийсь інший, наприклад, http://www.slovnyk.ua/services/translit.php

Ivanovich --> Ivanovych

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 17 янв 2017 22:49 
Гуру
Гуру
Аватара пользователя

Зарегистрирован:
22 сен 2007 16:09
Сообщения: 382
Откуда: м.Львiв
Руслан Пархуць писал(а):
от тільки даний сервіс робить транслітерацію за правилами не українського, а російського правопису

Ф-цiя писалась для отримання iнформацiї iз сторiнки GET запитом в загальному (а лiтерацiя - для прикладу роботи з нею).
P.S. ... сервiс то український - meta.ua :D

Бiблiотека для транслiтерацiї українського алфавіту згiдно Постанови Кабінету Міністрів України від 27 січня 2010 р. №55. Для використання помiстiть файл Translit.dsf в папку Library.
Код:
$Name=Гаращенко Юрій Костянтинович
$Res=%Library.Translit $Name
@Dialog.Message $Res
$Res=Harashchenko Yurii Kostiantynovych


Вложения:
Translit.zip [1.14 Кб]
Скачиваний: 1476

_________________
Більшість хороших програмістів виконують свою роботу не тому, що очікують оплати або визнання, а тому, що отримують задоволення від програмування.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 13 мар 2017 12:48 
Участник
Участник

Зарегистрирован:
04 фев 2016 15:42
Сообщения: 6
Потрібен скрипт щоб заповнювати КОАТУУ, зону та квартал в XML з ПКК. Таке можливо?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 13 мар 2017 16:35 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2299
Откуда: Vinnytsia
Kaktus писал(а):
Потрібен скрипт щоб заповнювати КОАТУУ, зону та квартал в XML з ПКК. Таке можливо?

@Map.DeselectAll
@Map.SelectLayer ID70005
$SC=@Map.SelCount
@if $SC<>1 then @Break Одна XML-ділянка має бути в карті
$SO=@Map.SelectedObject
$XYZ=@Map.Object[$SO].Centroid
$S=@Map.GetPublicMapQuarterInfo $XYZ
@Text[1].Text $S
$LC=@Text[1].Count
@if $LC<3 then @Break Інформація не знайдена
@if $LC<>3 then @Break Інформація може дублюватись
%LoopLine
$KOATUU=@Text[1].Line[1]
$KOATUU=@StringPart 2=$KOATUU
$ZoneNumber=@Text[1].Line[2]
$ZoneNumber=@StringPart 2=$ZoneNumber
$QuarterNumber=@Text[1].Line[3]
$QuarterNumber=@StringPart 2=$QuarterNumber
@Map.DeselectAll
@Map.SelectLayer ID70003
$SC=@Map.SelCount
@if $SC<>1 then @Break Об'єкт XML-кадастрова зона має бути в карті
$SO=@Map.SelectedObject
@Map.Object[$SO].Parameter[ID7000301] $KOATUU:$ZoneNumber
@Map.DeselectAll
@Map.SelectLayer ID70004
$SC=@Map.SelCount
@if $SC<>1 then @Break Об'єкт XML-кадастровий квартал має бути в карті
$SO=@Map.SelectedObject
@Map.Object[$SO].Parameter[ID7000401] $QuarterNumber
@Map.DeselectAll
@Dialog.Message $S

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


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 14 мар 2017 08:52 
Участник
Участник

Зарегистрирован:
04 фев 2016 15:42
Сообщения: 6
Дякую, Dmitry_Zolotar


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 08 апр 2017 23:00 
Специалист
Специалист

Зарегистрирован:
10 сен 2013 07:08
Сообщения: 19
Доброго дня!
Хочу формувати не стандартні xml-файли з не шаблонних шарів. @Map.In4ToXML вимагає in4:Ділянка і т.д.
Підскажіть будь-ласка як витягнути з карти <PointInfo> та <Polyline> ?
Все інше якось по тегам сформую без проблем.
Дякую!


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 10 апр 2017 09:03 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2299
Откуда: Vinnytsia
Дослідіть файл Digitals\Templates\XMLNormal.dmf. В ньому є "кореневий" шар ID70000 "XML-реквізити обм. файла". Єдиний об'єкт цього шару - корінь XML-файлу. В Параметрах XML цього шару вказано лише XMLGeometryTag=Externals, а доступні цьому шару параметри визначають ієрархію тегів цього об'єкта.
Не розберетесь що до чого там, зкиньте схему Вашого файла, або хоча б приклад xml-файлу - спробую налаштувати XMLNormal.dmf при умові, що геометрія зберігається так само.


Вложения:
FileDate.png
FileDate.png [ 43.46 Кб | Просмотров: 79764 ]

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 10 апр 2017 10:44 
Специалист
Специалист

Зарегистрирован:
10 сен 2013 07:08
Сообщения: 19
Дуже велике дякую!
Зі структурою розібрався вроді.
Але залишається питання: як передаються параметри з, наприклад, in4_ділянка?
Якщо у мене шари, наприклад, 1,2,3,4.
@Map.In4ToXML
Чи потрібно створювати карту тільки на основі шаблону XmlNormal?


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 10 апр 2017 10:56 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2299
Откуда: Vinnytsia
Має бути в карті шар ID70000 XML_реквізит обм.файлу, щоб карта зберігалась в XML. Цей шар краше зкопіювати з усіма параметрами, але змінити XML-параметри для використання шарів з Ін4.

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


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 21 май 2017 20:05 
Специалист
Специалист

Зарегистрирован:
10 янв 2010 12:05
Сообщения: 32
Откуда: Винницкая обл.
Вложение:
.jpg
.jpg [ 12.96 Кб | Просмотров: 79184 ]
Доброго дня. Підкажіть, в "Скрипт для перерахунку растрів в іншу систему координат" потрібно якось доробити ? Бо видає помилку


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 21 май 2017 20:13 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 2299
Откуда: Vinnytsia
Sergey45 писал(а):
Вложение:
.jpg
Доброго дня. Підкажіть, в "Скрипт для перерахунку растрів в іншу систему координат" потрібно якось доробити ? Бо видає помилку

Потрібно один раз перерахувати(меню Реєстри-Перерахувати з УСК-2000 в МСК-05) якусь карту в MSK-05, щоб такий датум з'явився в Datums.ini

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


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 211 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11, 12 ... 15  След.

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 16


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

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