Skip to content

Commit

Permalink
add gCSV import
Browse files Browse the repository at this point in the history
  • Loading branch information
tsamsonov committed Sep 24, 2023
1 parent ccd2125 commit 8576d24
Show file tree
Hide file tree
Showing 14 changed files with 507 additions and 65 deletions.
Binary file modified .DS_Store
Binary file not shown.
4 changes: 2 additions & 2 deletions _freeze/adv_05_PostGIS/execute-results/html.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"hash": "d742e532f3665d58ee4ad47f85ef236c",
"hash": "29de79a3535f0842d0aa0893b1b27695",
"result": {
"markdown": "---\ntitle: \"PostGIS\"\nsubtitle: \"Геоинформатика I. Базы пространственных данных\"\ndate: today\ndate-format: long\nauthor: \"Самсонов Тимофей Евгеньевич\"\nexecute:\n echo: false\n freeze: true\nengine: knitr\nformat:\n revealjs: \n theme: [default, custom.scss]\n margin: 0.2\n width: 1280\n height: 720\n slide-number: true\n footer: \"Самсонов Т. Е. Геоинформатика: курс лекций\"\n header-includes: <link rel=\"stylesheet\" media=\"screen\" href=\"https://fontlibrary.org//face/pt-sans\" type=\"text/css\"/>\nbibliography: references.yaml\nmainfont: PT Sans\n---\n\n\n## Базовые библиотеки\n\nФункциональность **PostGIS** опирается на 4 библиотеки:\n\n::: columns\n::: {.column width=\"50%\"}\n::: columns\n::: {.column width=\"30%\"}\n![](images/gdalicon.png){width=\"100%\"}\n:::\n\n::: {.column width=\"70%\"}\n**GDAL** выполняет конвертацию между форматами данных и растровые операции\n:::\n:::\n\n**PROJ** выполняет преобразования систем координат\n\n![](images/projicon.png){width=\"70%\"}\n:::\n\n::: {.column width=\"50%\"}\n**GEOS** выполняет геометрические операции в *2D*\n\n![](images/geosicon.png)\n\n**\\[SF\\]CGAL** выполняет геометрические операции в *3D*\n\n![](images/CGAL.png){width=\"70%\"}\n:::\n:::\n\n## Структура базы данных\n\n![](images/pg_database.svg){width=\"100%\"}\n\n## Структура схемы\n\n![](images/pg_schema1.svg){width=\"100%\"}\n\n## Структура схемы (продолжение)\n\n![](images/pg_schema2.svg){width=\"100%\"}\n\n## Библиография\n",
"markdown": "---\ntitle: \"PostGIS\"\nsubtitle: \"Геоинформатика I. Базы пространственных данных\"\ndate: today\ndate-format: long\nauthor: \"Самсонов Тимофей Евгеньевич\"\nexecute:\n echo: false\n freeze: true\nengine: knitr\nformat:\n revealjs: \n theme: [default, custom.scss]\n margin: 0.2\n width: 1280\n height: 720\n slide-number: true\n footer: \"Самсонов Т. Е. Геоинформатика: курс лекций\"\n header-includes: <link rel=\"stylesheet\" media=\"screen\" href=\"https://fontlibrary.org//face/pt-sans\" type=\"text/css\"/>\nbibliography: references.yaml\nmainfont: PT Sans\n---\n\n\n## Базовые библиотеки\n\nФункциональность **PostGIS** опирается на 4 библиотеки:\n\n::: columns\n::: {.column width=\"50%\"}\n::: columns\n::: {.column width=\"30%\"}\n![](images/gdalicon.png){width=\"100%\"}\n:::\n\n::: {.column width=\"70%\"}\n**GDAL** выполняет конвертацию между форматами данных и растровые операции\n:::\n:::\n\n**PROJ** выполняет преобразования систем координат\n\n![](images/projicon.png){width=\"70%\"}\n:::\n\n::: {.column width=\"50%\"}\n**GEOS** выполняет геометрические операции в *2D*\n\n![](images/geosicon.png)\n\n**\\[SF\\]CGAL** выполняет геометрические операции в *3D*\n\n![](images/CGAL.png){width=\"70%\"}\n:::\n:::\n\n## Структура базы данных\n\n![](images/pg_database.svg){width=\"100%\"}\n\n## Структура схемы\n\n![](images/pg_schema1.svg){width=\"100%\"}\n\n## Структура схемы (продолжение)\n\n![](images/pg_schema2.svg){width=\"100%\"}\n\n## Создание пустой БД\n\n**Создание БД** (запрос к любой существующей БД)\n\n``` sql\nCREATE DATABASE satino;\n```\n\n**Создание схемы и активация расширения**\n\n``` sql\nCREATE SCHEMA postgis;\nGRANT USAGE ON schema postgis to public; -- доступ для всех\nCREATE EXTENSION postgis SCHEMA postgis; -- включить postgis для схемы\nCREATE EXTENSION postgis_raster SCHEMA postgis; -- включить растры для схемы\nALTER DATABASE satino SET search_path=public,postgis; -- добавить в путь поиска\n```\n\n**Проверка установки**\n\n``` sql\nSELECT postgis_full_version();\n```\n\n::: callout-important\n## Внимание\n\nУстановка расширения `postgis` через графический интерфейс не позволяет выбрать схему и выполняется в схеме `public`.\n:::\n\n## Типы пространственных данных\n\nВ PostGIS существует 4 типа пространственных данных\n\n| | Тип | Особенности |\n|-----|-------------|-------------------------------------------------|\n| 1 | `geometry` | Векторные данные в декартовой системе координат |\n| 2 | `geography` | Векторные данные в угловой системе координат |\n| 3 | `raster` | Растровые данные (многомерные) |\n| 4 | `topology` | Топологические данные (вершины и грани). |\n\n::: callout-note\n## Топологические данные\n\nТип данных `topology` используется для хранения топологических покрытий и сетевых данных. Для анализа последних применяется отдельное расширение **pgRouting**.\n:::\n\n::: callout-tip\n## Интересный факт\n\nPostGIS позволяет хранить несколько пространственных столбцов в одной таблице\n:::\n\n## Каталог систем координат\n\n::: columns\n::: {.column width=\"30%\"}\nСистемы координат хранятся в таблице `spatial_ref_sys`\n\n::: callout-note\n#### SRS vs CRS\n\nНесмотря на то, что каталог имеет называется *SRS (Spatial Reference Systems)*, по факту он хранит описание *CRS (Coordinate Reference Systems)*.\n:::\n\n::: callout-important\n#### Терминология WKT\n\nТерминология WKT при описании CRS может не полностью соответствовать стандартами ISO / OGC\n:::\n:::\n\n::: {.column width=\"70%\"}\n![](images/srs_postgis.png)\n:::\n:::\n\n## Создание пространственных таблиц\n\nПри создании пространственных таблиц необходимо указать\n\n- уникальный идентификатор\n\n- геометрический столбец заданного типа и КСО\n\nНапример, таблица точек гидрологических промеров может иметь следующий состав:\n\n``` sql\nCREATE TABLE postgis.hydro_measures (\n\tfid serial primary key,\n\tdepth real,\n\tgeom geography(point, 4326)\n)\n```\n\n## Ручное создание данных\n\nВставка новых строк выполняется посредством стандартной команды INSERT:\n\n``` sql\nINSERT INTO postgis.hydro_measures(fid, depth, geom)\nVALUES\n\t(1, 1.23, ST_GeomFromText('POINT (36.37802128 55.21121827)')),\n\t(2, 1.57, ST_GeomFromText('POINT (36.37834198 55.21127511)')),\n\t(3, 0.78, ST_GeomFromText('POINT (36.37861509 55.21139158)')),\n\t(4, 0.95, ST_GeomFromText('POINT (36.37905934 55.21137259)')),\n\t(5, 1.11, ST_GeomFromText('POINT (36.37938529 55.21125473)'));\n```\n\nАльтернативный синтаксис через преобразование строки к типу данных:\n\n``` sql\nINSERT INTO postgis.hydro_measures(fid, depth, geom)\nVALUES\n\t(1, 1.23, 'POINT (36.37802128 55.21121827)'::geography),\n\t(2, 1.57, 'POINT (36.37834198 55.21127511)'::geography),\n\t(3, 0.78, 'POINT (36.37861509 55.21139158)'::geography),\n\t(4, 0.95, 'POINT (36.37905934 55.21137259)'::geography),\n\t(5, 1.11, 'POINT (36.37938529 55.21125473)'::geography);\n```\n\n## Импорт из CSV\n\nДля импорта можно использовать команду `COPY` :\n\n``` sql\nCREATE TABLE IF NOT EXISTS postgis.geo_points (\n\tfid serial primary key,\n\tname text,\n\tcomment text,\n\theight_abs real,\n\theight_add real,\n\ttype text,\n\tx real, \n\ty real\n);\n\nDELETE FROM postgis.geo_points; -- опционально, если хотите очистить\n\nCOPY postgis.geo_points \n\tFROM '/Volumes/Data/Spatial/Satino/geo_points.csv' \n\tDELIMITER as ',' \n\tCSV HEADER;\n```\n\n## Библиография\n",
"supporting": [],
"filters": [
"rmarkdown/pagebreak.lua"
Expand Down
Loading

0 comments on commit 8576d24

Please sign in to comment.