Сервер переехал на новый сайт http://www.oraclegis.com/blog. Здесь идет ретрансляция

пятница, 21 ноября 2008 г.

Загрузка шейп|shape (shp) файлов в Oracle Spatial

Shape файлы – это ГИСовский формат данных, разработанный компанией ESRI: http://en.wikipedia.org/wiki/Shapefile. Это формат де-факто стал стандартныv и большинство ГИСовского программного обеспечения умеет экспортировать в него данные. Т.е. его можно использовать как промежуточный формат для загрузки в другие форматы. Основное его достоинство - распространенность и открытость.

В комплекте базы данных Oracle (на диске с примерами) идет загрузчик shape файлов в Spatial. В версии 10.2.0.4 это загрузчик работает некорректно. Правильную версию можно взять в дистрибутиве базы данных Oracle 11.1.0.6 или 11.1.0.7 обычно он лежит в каталоге $ORACLE_HOME/md/jlib в файле sdoutl.jar. Загрузчик написан на java и имя класса oracle.spatial.util.SampleShapefileToJGeomFeature.

Его можно скачать здесь.

Если запустить этот класс без параметров, то будет выведена помощь (смотрите листинг ниже). Но есть один недокументированный факт.  Это загрузчик может осуществлять загрузку файлов DBF в различных кодировках.

К примеру, если запустить с параметрами по-умолчанию, то будет взята кодировка 1251. Для того, чтобы загрузить данные в другой кодировке ISO-8859-5 – в вызов виртуальной машины java нужно добавить параметр -Dfile.encoding=ISO-8859-5. Список кодировок можно взять здесь.

Например вот так

java -Dfile.encoding=ISO-8859-5 -cp %clpath% oracle.spatial.util.SampleShapefileToJGeomFeature -h orabi -p 1521 -s orcl -u mvdemo -d mvdemo -t %1 -f C:\maxidata\RUS_Shape_With_Names\%1 -r 8307 -g geom

В этом случа загрузка будет проведена корректно.

Параметры загрузчика:

USAGE: java -cp [ORACLE_HOME]/jdbc/lib/ojdbc14.jar;./sdoutl.jar;./sdoapi.jar SampleShapefileToJGeomFeature -h db_host -p db_port -
s db_sid -u db_username -d db_password -t db_table -f shapefile_name [-i table_id_column_name][-r srid][-g db_geometry_column][-x
max_x,min_x][-y max_y,min_y][-o tolerance]
Usage explanation (parameters used):
<-h>: Host machine with existing Oracle database
<-p>: Host machine's port with existing Oracle database (e.g. 1521)
<-s>: Host machine's SID with existing Oracle database
<-u>: Database user
<-d>: Database user's password
<-t>: Table name for the result
<-f>: File name of an input Shapefile (without extension)
[-i]: Column name for unique numeric ID; if required
[-r]: Valid Oracle SRID for coordinate system; use 0 if unknown
[-g]: Preferred or valid SDO_GEOMETRY column name
[-x]: Bounds for the X dimension; use -180,180 if unknown
[-y]: Bounds for the Y dimension; use -90,90 if unknown
[-o]: Load tolerance fields (x and y) in metadata, if not specified, tolerance fields are 0.05
[-a]: Append shapefile data to an existing table
[-n]: Start ID for column specified in -i parameter
[-c]: Commit interval. Default, commits every 1000 conversions and at the end of a run
[-v]: Println interval. Default, displays every 10 conversions.

Комментариев нет: