Більше

Виберіть за місцем розташування на багатокутнику із запитом sql

Виберіть за місцем розташування на багатокутнику із запитом sql


У мене 2 столики

складіть цей багатошаровий шар із 10000 записами

таблиця b - це точковий шар із 600000 записів

у базі геоданих postgresql я вибираю функцію багатокутника із запитом шляхом введення x та y

тоді я вибрав полігон однієї функції, мені потрібно вибрати записи точкового шару, які

перетинаються функцією багатокутника, але цей час запиту 40 секунд і дуже повільно, будь ласка, допоможіть мені.

виберіть форму з sde.table_b, де st_contains ((виберіть форму зі st_point (235116.084, 2225686.917,10100) як tt, table_a, де st_contains (table_a.shape, tt) = 't'), shape) = 't'

точкові дані є вибірковими не дуже


Це питання більш ніж трохи заплутане ("дані балів є зразком насправді не дуже") що?). Ваш синтаксис запиту SQL є надзвичайно нерегулярним і не може використовувати правильну функцію, щоб скористатися просторовим індексом на точковому шарі. Напевно, вам хочеться:

SELECT b.shape FROM table_b b, table_a a WHERE sde.st_contains (a.shape, st_point (235116.084,2225686.917,10100)) = 't' AND sde.st_within (b.shape, a.shape) = 't'

Це також можна записати за допомогою підзапиту:

SELECT b.shape FROM table_b b WHERE sde.st_within (b.shape, (SELECT a.shape FROM table_a a WHERE sde.st_contains (a.shape, st_point (235116.084,2225686.917,10100)) = 't')) = ' t '

У вас є достатньо функцій, щоб ви могли побачити вплив просторової фрагментації, тому навіть якщо дані точок мають відповідний індекс, ви можете отримати погану продуктивність просто тому, що функції точок розподілені навмання по таблиці точок, що призведе до "повного" сканування таблиці ".

Ви також повинні знати, що найкраща практика ArcGIS - уникати використання користувача SDE для створення будь -яких даних користувача. SDE слід зарезервувати для адміністрування бази геоданих - якщо цього не зробити, ви ризикуєте пошкодити базу геоданих. Я настійно закликаю вас створити принаймні одного нового користувача для володіння просторовими даними та принаймні одного нового користувача для програм, які використовуватимуть для підключення до даних (з мінімальними необхідними дозволами, керованими за допомогою ролей, як це є найкращою практикою для бази даних).


Подивіться відео: Select ms sql. Выборка данных из таблицы mssql Базы данных для C# программиста #5