Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Построить буфер точке / 16 сообщений из 16, страница 1 из 1
05.09.2017, 09:29
    #39515492
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Здравствуйте!

Подскажите пожалуйста как сделать 30-ти сантиметровый буфер точки? Уже и документацию читал все равно не могу разобраться в этих коэффициентах.

Код: sql
1.
sdo_buffer(/* геометрия точки */, 0.02, 0.3)
...
Рейтинг: 0 / 0
05.09.2017, 09:46
    #39515503
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
А вообще хочу понять как работать с Relate. В примере реализована работа с одним объектом точного слоя. Просто один объект исходная точка, а второй буфер из исходной точки. Не понимаю почему возвращается FALSE

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
WITH BUFF AS (select /*+ ALL_ROWS */
                  T.Id,
                  m.sdo_diminfo,
                  mdsys.sdo_geom.sdo_buffer(T.gdo_geometry, m.sdo_diminfo, 0.3, 'unit=meter') gdo_geometry
             from geo.TEST T, mdsys.SDO_GEOM_METADATA_TABLE m
            where T.Id = 100
              and m.sdo_table_name = 'TEST' 
              and m.sdo_owner = 'GEO')

SELECT BUFF.Id
       ,(select mdsys.sdo_geom.relate(BUFF.gdo_geometry, BUFF.sdo_diminfo, 'mask=contains', C.gdo_geometry, BUFF.sdo_diminfo) from geo.TEST C where C.Id = BUFF.Id) R01
  FROM BUFF
...
Рейтинг: 0 / 0
06.09.2017, 00:16
    #39516067
IgorSm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Nechto,

А что возвращает если в запрос подставить

Код: plsql
1.
   (select mdsys.sdo_geom.relate(BUFF.gdo_geometry, BUFF.sdo_diminfo, 'mask=DETERMINE', C.geometry2, BUFF.sdo_diminfo)
...
Рейтинг: 0 / 0
06.09.2017, 13:05
    #39516403
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
NechtoПросто один объект исходная точка, а второй буфер из исходной точки. Не понимаю почему возвращается FALSE
Точно сказать не могу, но что у Вас в diminfo - лежит ли точка в границах и не превышает ли точность Ваши 0.3 метра?
...
Рейтинг: 0 / 0
08.09.2017, 07:32
    #39517911
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
IgorSmNechto,
А что возвращает если в запрос подставить
Код: plsql
1.
   (select mdsys.sdo_geom.relate(BUFF.gdo_geometry, BUFF.sdo_diminfo, 'mask=DETERMINE', C.geometry2, BUFF.sdo_diminfo)



Поставил 'mask=DETERMINE', вернуло 'DISJOINT'

Сергей Арсеньев Точно сказать не могу, но что у Вас в diminfo - лежит ли точка в границах и не превышает ли точность Ваши 0.3 метра?


В DIMINFO у меня следующее
Код: plaintext
1.
2.
3.
sdo_dimname   sdo_lb   sdo_ub    sdo_tolerance
X             0        180       0.05
Y             0        90        0.05
...
Рейтинг: 0 / 0
08.09.2017, 07:51
    #39517921
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Что-то tolerance для градусов слишком большой.
...
Рейтинг: 0 / 0
08.09.2017, 22:38
    #39518462
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Alexander RyndinЧто-то tolerance для градусов слишком большой.
+1


ну как и следовало ожидать ...
либо границы для метров маленькие, либо 0.05 градуса это маловато для 0.3 метра
...
Рейтинг: 0 / 0
09.09.2017, 10:59
    #39518546
IgorSm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Хм, с градусной системой давно дел не имел.
Но думал, что толеранс указывается в в метрах
https://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_intro.htm#SPATL450

For geodetic data (such as data identified by longitude and latitude coordinates), the tolerance value is a number of meters. For example, a tolerance value of 100 indicates a tolerance of 100 meters. The tolerance value for geodetic data should not be smaller than 0.05 (5 centimeters), and in most cases it should be larger. Spatial uses 0.05 as the tolerance value for geodetic data if you specify a smaller value with the following functions: SDO_GEOM.RELATE, SDO_GEOM.SDO_DIFFERENCE, SDO_GEOM.SDO_INTERSECTION, SDO_GEOM.SDO_UNION, and SDO_GEOM.SDO_XOR; for other functions, Spatial uses the smaller tolerance value that you specify.
...
Рейтинг: 0 / 0
09.09.2017, 12:20
    #39518571
IgorSm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Да и для sdo_buffer при использовании градусов (geodetic data) рекомендуется указывать arc_tolerance.
Цитаты
For example: 'unit=km arc_tolerance=0.05'
If the input geometry is geodetic data, this parameter is required, and arc_tolerance must be specified.
...
If the input geometry is geodetic data and if arc_tolerance is not specified, the default value is the tolerance value multiplied by 20

https://docs.oracle.com/database/121/SPATL/sdo_geom-sdo_buffer.htm#SPATL1111
...
Рейтинг: 0 / 0
11.09.2017, 06:54
    #39518962
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Сергей АрсеньевAlexander RyndinЧто-то tolerance для градусов слишком большой.
+1
ну как и следовало ожидать ...
либо границы для метров маленькие, либо 0.05 градуса это маловато для 0.3 метра

Подскажите пожалуйста, что нужно подставить чтобы результат появился? А то я не совсем понимаю эту точность в градусах.
...
Рейтинг: 0 / 0
11.09.2017, 10:33
    #39519023
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
NechtoПодскажите пожалуйста, что нужно подставить чтобы результат появился? А то я не совсем понимаю эту точность в градусах.
А что возвращает
Код: plsql
1.
2.
BUFF.Id
       ,(select mdsys.sdo_geom.relate(BUFF.gdo_geometry, 'mask=contains', C.gdo_geometry, 1e-8) from geo.TEST C where C.Id = BUFF.Id) R01

?
...
Рейтинг: 0 / 0
11.09.2017, 12:07
    #39519088
Nechto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Сергей АрсеньевNechtoПодскажите пожалуйста, что нужно подставить чтобы результат появился? А то я не совсем понимаю эту точность в градусах.
А что возвращает
Код: plsql
1.
2.
BUFF.Id
       ,(select mdsys.sdo_geom.relate(BUFF.gdo_geometry, 'mask=contains', C.gdo_geometry, 1e-8) from geo.TEST C where C.Id = BUFF.Id) R01

?

FALSE
...
Рейтинг: 0 / 0
11.09.2017, 13:58
    #39519164
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Nechto,

а геометрии привести можешь?

BUFF.gdo_geometry
и
C.gdo_geometry

в виде mdsys.sdo_geometry(...)
...
Рейтинг: 0 / 0
11.09.2017, 14:19
    #39519191
IgorSm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
+1
пример
Код: plsql
1.
2.
3.
4.
5.
6.
  WITH BUFF AS (select /*+ ALL_ROWS */
 SDO_GEOMETRY(2001, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(34.73333333, 43.93333333)) AS geom ,
 mdsys.sdo_geom.sdo_buffer(SDO_GEOMETRY(2001, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(34.73333333, 43.93333333)), 0.3 ,0.05, 'unit=meter') BF
  FROM dual)
  select   (mdsys.sdo_geom.relate(BF, 'mask=contains', geom, 0.05 ))FF 
  from buff



Кстати, возвращается
MASK=CONTAINS
...
Рейтинг: 0 / 0
11.09.2017, 16:49
    #39519325
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
IgorSm,

Так по документации:
авторThe SDO_GEOM.RELATE function can return the following types of answers:

If you pass a mask listing one or more relationships, the function returns the specified mask value if one or more of the relationships are true for the pair of geometries. If all relationships are false, the procedure returns FALSE.
...
Рейтинг: 0 / 0
11.09.2017, 17:13
    #39519359
IgorSm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построить буфер точке
Сергей Арсеньев,

Да я ж про то , что не FALSE вернулся )
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Построить буфер точке / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]