Чи є спроби замінити файл форми? [зачинено]


67

Нещодавно я витрачав багато часу на перетворення ідеально хороших імен полів на кшталт "Процент громадян віком від 25 років і старших ступенів бакалавра" в такі речі, як "edbchogtr", щоб задовольнити ліміт імені поля DBF на 10 символів.

В іншому потоці ( "Дивацтва" в технічній специфікації Shapefile ) геопростірпітон прокоментував, що "Незважаючи на недоліки, дивацтва та обмеження формату файлу формату, він наполегливо зберігається в ГІС та навколо нього. Кожна інша спроба замінити його надто роздута для просте векторне зберігання або занадто фірмове ".

Ця активність у поєднанні з коментарем містера Лоугеда викликає цікавість:

  • чи були колись явні спроби замінити форм-файл як універсальний формат зберігання та обміну даними GIS?
  • Чи є претенденти?
  • Якщо існували змагальні формати, чому вони не змогли?
  • Чи Есрі відмовився їх підтримати, чи історія просто одна з технологічних інерцій?
  • Якщо не було спроб ... чому б і ні?

Здається, ми могли б зробити трохи краще для себе, як розробники ГІС, так і користувачі.


2
@Mapperz Окрім нещодавно випущеного API Geodatabase, я не бачу жодних безкоштовних інструментів для написання геоданих. Я не думаю, що це може вважатися заміною, за винятком частин ESRI у світі.
canisrufus

2
Ви можете писати та читати бази даних геоданих (через API), використовуючи GDAL gdal.org/ogr/drv_filegdb.html за допомогою ресурсів.arcgis.com
content/geodatabases/10.0/file-gdb-api

1
Хотілося б, щоб API Python читав / записував файлову базу даних Geodata (принаймні прості функції) без ліцензії ArcGIS - це було б відкрито.
PolyGeo

2
@PolyGeo ви та всі інші :)
Рагі Ясер Бурхум

3
@celenius Від gdal.org/ogr/drv_shapefile.html "Геометрія: Формат Shapefile явно використовує 32- бітові зсуви і тому не може перевищувати 8 Гб (він фактично використовує 32-бітові зсуви до 16-бітових слів). Отже, не рекомендується використовувати файл розмір понад 4 Гб. Атрибути: Формат dbf не має в ньому жодних зрушень, тому він може бути довільно великим. " Таким чином, у вас можуть бути досить великі dbfs, але ви повинні бути обережними, коли ваш SHP перевищує 4 Гб. Тоді ви граєте з вогнем.
Рагі Ясер Бурхум

Відповіді:


50

Це тема, яка завжди виникає. Я не можу мати правильну відповідь, але я можу дати вам моя особиста думка .

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

  • По-перше, є специфікація . Я маю на увазі, я в моїх тридцятих роках, і ця річ існувала ще з підлітків. Тож можна з упевненістю сказати, що ця специфіка існує вже деякий час. Звичайно, є кілька інших форматів, які також публікуються, але різниця щодо цього полягає в тому, що ...

  • Це порівняно просто! Він побудований на версії DBF Format , який на той момент вже існував і широко підтримувався на кількох платформах / ОС. Вже були парсери, які могли прочитати половину цього формату (частина DBF), тому це полегшило підтримку додаткового додатку. У вас є геометрія? Впевнений, просто серіалізуй це і напиши. Ви закінчили. Контрастуйте це з покриттям ! Спробуйте пояснити комусь простими словами, що робить чиста топологія . Не тривіально писати топологічно чисте висвітлення.

  • Найголовніше, я вважаю, що причина №1 досі залишається популярною в тому, що вони підтримуються як у відкритому коді, так і у власній системі . Який GIS ви знаєте, що не підтримує форм-файли?!? Нечувано.

В якості заміни, ми чуємо Файлові бази геоданих і SpatiaLite . Обидва формати значно перевершують функціональність, гнучкість, швидкість тощо у порівнянні з Shapefiles. По-своєму вони мають певні речі, які роблять їх кращими один від одного в різних областях, але порівняння просторових і FileGDB, безумовно, виходить за межі цього питання.

Я думаю, що будь-який із цих форматів замінить Shapefiles? Не в їх нинішніх втіленнях .

Чому?

Не через технологічний аргумент (я казав, що вони в цьому аспекті вище), а через щось інше: ліцензування.

То які їх проблеми?

FileGDB :

FileGDB забезпечує взаємодію завдяки новому API FileGDB. Тим не менш, цей API надається у двійковому форматіза ESRI. Це не специфікація. Раніше працював у команді GeoDatabase, я можу вам сказати, всупереч усім теоретикам змови, що носять олово-фольгу, це зовсім не шкідливо. Це тому, що внутрішня база GeoDatabase змінюється з кожним випуском. Публікація повної специфікації передбачає, в основному, детальну інформацію про те, як слід підтримувати все, а потім ретельно задокументувати зміни формату з кожним щорічним випуском. Це не має сенсу. Тож API FileGDB, хоча він і не є специфікацією, він резюмує всі ці невеликі зміни. І тепер його можна використовувати кросплатформенну! Зауважте, це величезний крок вперед! Зважаючи на консервативний характер ESRI, це, безумовно, реакція в правильному напрямку.

І все ж, підтримка, що стосується лише бінарних даних, нікого в світі відкритого джерела не надто радіє. Як тоді скористатися переносом якогось коду, щоб сказати якийсь інший смак Linux, якщо ESRI не підтримує його. Ви не можете. Саме це робить Open Source потужним, і тепер ви не можете цим скористатися. Якщо ESRI вирішить припинити підтримувати Debian, це все. Ви закінчили. І ви нічого не можете зробити, щоб змінити це.

Просторовий :

Spatialite є приголомшливим, оскільки він отримує всю безкоштовну функціональність від SQLite . SQLite використовується скрізь. Це на вашому Android телефоні, на вашому iPhone / iPad, на Firefox, у Google Chrome, на декількох комерційних вбудованих пристроях - може працювати назавжди. Щоб по-справжньому перетворити його в Geoformat (а не просто робити тупі операції з обмеженням), йому потрібно використовувати ту саму бібліотеку геометрії, яку використовує PostGIS: GEOS . На жаль, GEOS базується на ще одній дивовижній бібліотеці геометрії, відомій як JTS . Всі алгоритми в JTS надзвичайно потужні, тож у чому проблема?

Ну, JTS ліцензується як LGPL з відкритим кодом , а LGPL - вірусна ліцензія . JTS - це LGPL, означає, що GEOS - це LGPL, означає, що просторово пов'язаний статично з GEOS є LGPL. Це смокче. Чому? Не надто пояснюючи ліцензії з відкритим кодом , я можу вам сказати, що, наприклад, я не можу використовувати просторит на, скажімо, додатку для iPhone, тому що це зробить весь мій додаток автоматично відкритим кодом (iOS дозволяє лише статичне посилання). Будь-який тип ліцензії GPL (розумно) відлякує дерьмо з ESRI, і тому вони не торкнуться його 10-футовим стовпом. Отже, ArcGIS, найпопулярніша система ГІС у світі, не (і, мабуть, ніколи) не підтримує просторово спочатку. Це автоматично вбиває його як життєздатний формат.

І таким чином ми повертаємось до шалених форм, які підтримуються всюди.

Оновлення :

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


Проблема з SQLite / Spatialite полягає в тому, що це не формат, це реляційний двигун бази даних з просторовою бібліотекою поверх нього. Хоча це робить дуже добре, він змушує зберігати дані у реляційному порядку, що не завжди є найбільш підходящим способом. Крім того, складність формату файлів SQLite ( sqlite.org/fileformat2.html ) ускладнює доступ до даних без двигуна SQLite і, таким чином, не підходить для відкритого та легкодоступного формату файлів для обміну даними. Це насправді не було розроблено для цього.
Ігор Брейц

8
Насправді LGPL не є вірусною ліцензією - вона була спеціально розроблена, щоб цього уникнути. Крім того, Spatialite ліцензується за ліцензією MPL три ( джерело ), тобто серед іншого, ви можете вибрати публічну ліцензію Mozilla як ліцензію , яка найкраще підходить, та працювати за її (дуже слабким копілефт) умовами. Щонайменше, я читаю, що ESRI не має підстав не підтримувати Spatialite через ліцензію - чи будуть вони (враховуючи, що вона змагається майже в тому ж просторі, що і FileGDB) - це вже інша історія ...
om_henners

3
@Ragi, ти змішуєш, використовуючи бібліотеку та переносячи її. Звичайно, перенос повинен бути LGPL, оскільки це по суті є похідною роботою. Але якщо ви пов'язуєте це динамічно, це не вважається похідною роботою, це "робота, яка використовує бібліотеку", і ви отримуєте можливість зберігати свою ліцензію ( en.wikipedia.org/wiki/GNU_Lesser_General_Public_License ). Так що сказати, що "LGPL є вірусною" без додаткових пояснень не є точним.
Ігор Брейц

2
Але знову ж таки, це суперечка, оскільки Spatialite ліцензується за ліцензованою деревом схемою ( groups.google.com/forum/?fromgroups#!topic/spatialite-users/… ), тож ви можете вибрати ліцензію, яка підходить. вам найбільше - MPL дозволяє статичне з'єднання.
Ігор Брейц

2
@ bugmenot123 Добре, тоді виправте це, якщо хочете, але не звинувачуйте мене у поширенні FUD щодо ОС, оскільки це образливо. Я пишу код ОС вже більше десятиліття (не здивувався б, що ви дещо використовували моє), і це не було злим розлюченням. Це було правдою - і досі є. Динамічне посилання в iOS LGPL (якщо бути точнішим, фреймворки були дозволені в iOS 8). Це ніколи не було технічним, а юридичним. Поширення в Appstore вимагає підписання коду - і на жаль для всіх любителів ОС, як я - LGPL - це нечітка ліцензія на це. Жодного прецеденту в суді немає.
Рагі Ясер Бурхум

18

Сама частина SHP + SHX не така вже й погана. Справжня проблема полягає в частині DBF. Це могло б зробити з новим форматом, який підтримував unicode та всілякі сучасні типи полів. Проблема полягає в тому, що він добре підтримується всім програмним забезпеченням там.


6
+1 Покращити частину DBF теж зовсім не складно: це дійсно зводиться до переконання розробників програмного забезпечення погодитися на щось.
whuber

1
Чи була спроба?
canisrufus

5
Я часто висловлювався за поправку Shapefile, яка просто замінила файл CSV UTF-8 на DBF. Підтримка була б простою і вимагала мінімальних змін до існуючих програмних пакетів.
scw

1
Програма Software @canis Fox зробила незначну (фірмову) спробу в кінці 80-х. Після того, як MS придбав їх (приблизно, 1990), це було саме так. Спільнота створила стандарт DBF 3, що в значній мірі заморозило всю розробку. MS випустив Access; FoxPro вимер; світ рухався далі.
whuber

1
Навпаки, до @Uffe, файлів CSV можна отримати випадковий доступ: вам потрібен лише індекс, як і файли DBF для ефективного пошуку. Найбільша проблема, яку я бачу, полягає в тому, що, здавалося б, незначні зміни, які природним чином відбуваються у файлах CSV, наприклад, цитування рядків або перетворення CR / LF, викручують усі зміщення байтів. Структура запису фіксованої довжини файлу DBF, хоча і менш ефективна у зберіганні, не має такої проблеми.
whuber


7

Принаймні просторит має намір див., Наприклад, цю презентацію http://www.sourcepole.ch/assets/2010/9/10/foss4g2010_spatialite.pdf

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

Інші поділяють таку думку:

Це не тому, що проект SpatiaLite не надав нам інструментів для його реалізації, а громада могла менше піклуватися про це. SHP працює на них, і немає жодних причин для зміни.

http://www.spatiallyadjusted.com/2010/09/16/spatialite-is-not-the-shapefile-of-the-future/

Більше думок про базу даних про географічну базу даних Esri, просторовий і autodesk sdf тут: http://www.spatialdbadvisor.com/blog/121/the-shapefile-manifesto


Наскільки мені здається, spatiaLite - це ~ 3 мегабайти накладних витрат у функціях, довідкових системах тощо, що не дозволяють йому бути хорошим форматом обміну.
Scro

Власне, ліцензія на просторіт є менш ідеальною - вона не має нічого спільного з інструментами.
Рагі Ясер Бурхум

@Scro, 3 мегабайт занадто великий? Це, звичайно, не надто велике для робочого столу. Ви повинні розглянути мобільні пристрої. Крім того, чи існує ще один просторовий API з еквівалентною функціональністю менших розмірів, ніж Spatialite?
klewis

@klewis - це не надто велике саме по собі, це просто дуже неефективно, коли ви вважаєте, що там багато невеликих (на думку <200 кбіт) наборів даних. Це багато накладних витрат, особливо зважаючи на той факт, що, отримавши, ти зазвичай залишаєш кожен набір даних у файлі 3 Мб або перекочуєш його у існуючу базу даних. Щоб було зрозуміло, я <3 spatiaLite - але ми говоримо про передачу даних, де якийсь плоский файл / xml / wkb був би набагато ефективнішим.
Scro

6

Esri вже кілька років просуває бази даних геоданих як замість форм- файлів.

Зовсім недавно вони запропонували API, який приховує будь-які дивацтва.


Я багато не працював з базами геоданих. У Вікіпедії сказано, що вони є "закритим" стандартом, наприклад, специфікація бази даних геоданих не була опублікована. Дуже важко отримати дуже широке прийняття, не публікуючи внутрішній формат. Хоча я занадто молодий, щоб знати історію, я гадаю, що shapefiles частково настільки популярні через публічну частину специфікації. API здається гарним кроком.
canisrufus

1
@canis ти прав. У той час ніхто не приймав би формули, за винятком того, що ESRI спеціально рекламував їх як відкритий формат обміну даними ГІС. Навіть з обмеженими програмними засобами, наявними на той час, з випуском ESRI чіткої .shp / .shx специфікації (і зобов'язанням дотримуватися її), стало проблемою лише декількох годин роботи над написанням коду для читання та пишіть формати: не потрібно зворотна інженерія.
whuber

Поки API - це бінарне відтворення чорного поля, FGDB не побачить такого ж прийняття, як SHP. Навіть якщо Esri переконує всіх своїх клієнтів перейти на FGDB з SHP, API насправді не сумісний з відкритим кодом.
dericke

3

Діалект XML, як GML, напевно не оптимізований для роботи з величезними наборами даних, але може використовуватися як формат обміну між програмним забезпеченням або між платформами.

Я не вірю, що існує якась проблема з ліцензуванням (див. Повідомлення Рагі Ясера Бурхума про вірусні характеристики Spatialite), і досить легко адаптувати існуючі парсери за потреби.


1
Я думаю, що це не було згадано лише з тієї причини, яку ви робите, що вона не оптимізована для великих наборів даних. XML роздутий. Формати, згадані тут, є бінарними, де GML зберігає точки як рядки. Розмір може бути на порядок різним.
canisrufus

3
Канісруф має рацію. Є кілька проблем з GML. Інфосетом можна керуватися за допомогою XPath, але кожен, хто намагався реалізувати просторову індексацію поверх XML, скаже вам, наскільки це нераціонально і як погано він відображає традиційні реляційні бази даних. Не вникаючи в багато деталей, якщо щось настільки базове, як індексація та запит, стає нетривіальним, формат роздутий, і він, в основному, вимагає, щоб у вас був весь набір даних в пам'яті, щоб зробити з ним що-небудь, то це не гарний варіант.
Рагі Ясер Бурхум

4
XML роздувається, коли зберігається як звичайний текст. Є вільні (як безкоштовні, так і безкоштовні зміни та перерозподіл) доступні бінарні бібліотеки xml, які можуть слугувати заміною читачів xml, надаючи людям свободу використовувати як читабельність xml для людини, так і ефективність та ефективність зберігання двійкових. . Єдина причина, про яку я можу подумати, що її ніколи не сприймають по-великому, це те, як зауважує johandvw вище : ніхто не піклується.
matt wilkie

1

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

На мою думку, майбутнє розподілу просторових даних має зосереджуватися на веб-послугах та веб-сервісах, а специфікація WFS (яка використовує GML) відкрита та встановлена. GeoJSON менше, і з ним можна простіше працювати в JavaScript. Однак при стисненні розміри порівнянні.

Я б також хотів би кинути в голосуванні за ESRI в особистих баз геоданих . Це може бути часто злісний формат Microsoft, але він підтримує ODBC, SQL запити, перегляди і дозволяє не розробникам створювати прості форми введення даних і включати принаймні деякий рівень перевірок цілісності даних (типи даних, довжина, унікальні значення) .


Це справедливий момент. Що в них добре, це те, що, знаючи англійську мову, можна зрозуміти, що означають поля.
canisrufus

Та й справді роль метаданих наборів даних. Файл форми може використовувати файл XML з тим самим іменем, щоб зберігати це.
географіка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.