Программа на С. Как заставить её читать shp?

0 голосов
спросил 30 Окт, 12 от vitalyisaev2 (1,040 баллов) в категории Программные продукты Esri
Здравствуйте, я новичок в программировании. Написал небольшую программу, которая вписывает окружности и рассчитывает параметры речных излучин. Сейчас в неё загружаются обычные текстовые файлы в формате:

x1 y1
x2 y2
.....
xn yn
EOF

Как сделать так, чтобы она цепляла точки из polyline shp?
Стоит ли пытаться ради этого её переносить в ArcGis? Или правильный путь - лезть и пытаться считывать shp просто так, без посредничества программы?




image

6 Ответы

0 голосов
ответил 30 Окт, 12 от new_sergei (2,660 баллов)
Здравствуйте, я новичок в программировании. Написал небольшую программу, которая вписывает окружности и рассчитывает параметры речных излучин. Сейчас в неё загружаются обычные текстовые файлы в формате:

x1 y1
x2 y2
.....
xn yn
EOF

Как сделать так, чтобы она цепляла точки из polyline shp?
Стоит ли пытаться ради этого её переносить в ArcGis? Или правильный путь - лезть и пытаться считывать shp просто так, без посредничества программы?




image

    

Точного ответа на Ваш вопрос я не знаю. Тут ещё всё упирается в то, какими средствами вы хотите обойтись... Если для Вас сторонние библиотеки не являются проблемой, то посмотрите в сторону библиотеки gdal. Я с ней плотно не работал, но насколько я знаю, с помощью этой библиотеки shp-файл прочитать можно. И если я не ошибаюсь, там как раз есть API для чистого C.
0 голосов
ответил 30 Окт, 12 от vitalyisaev2 (1,040 баллов)
Спасибо большое за совет. Программа написана на чистом С за исключением фрагмента, отвечающего за работу с динамической памятью. Для лёгкости там использовался vector из С++.

Я никогда не работал с бинарными файлами, но слышал, что зная, как они устроены, можно их открывать и читать прямо в лоб.

Но если уже есть стандартные функции чтения перечня вершин из shp файла, хотелось бы их использовать.
0 голосов
ответил 30 Окт, 12 от new_sergei (2,660 баллов)
Спасибо большое за совет. Программа написана на чистом С за исключением фрагмента, отвечающего за работу с динамической памятью. Для лёгкости там использовался vector из С++.

Я никогда не работал с бинарными файлами, но слышал, что зная, как они устроены, можно их открывать и читать прямо в лоб.

Но если уже есть стандартные функции чтения перечня вершин из shp файла, хотелось бы их использовать.

    
Тогда посмотрите в сторону gdal.
0 голосов
ответил 31 Окт, 12 от vitalyisaev2 (1,040 баллов)
Наверное, буду использовать библиотеки Shapefile C Library http://shapelib.maptools.org/ от автора gdal. Она попроще. Благодарю.
0 голосов
ответил 31 Окт, 12 от Worker (22,480 баллов)
Не знаю, актуально ли - но на всякий случай - имеется открытая спецификация шейп-файла на сайте Есри.

http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
0 голосов
ответил 01 Ноя, 12 от geouser (9,040 баллов)
Не знаю, актуально ли - но на всякий случай - имеется открытая спецификация шейп-файла на сайте Есри.

http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf


Именно. Если есть желание возиться с битами и читать бинарные файлы напрямую (хорошо бы быть программистом). Мой коллега это освоил, мне было лень.

Ежели такового желания нет, то и нужно использовать бесплатные библиотеки (API), которые умеют работать с геоданными из шейпфайлов - их вроде не одна а больше.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...