Text
This commit is contained in:
parent
3300089396
commit
ce481c7e30
@ -4,10 +4,9 @@ category: Программирование
|
|||||||
tags: программирование, cmake
|
tags: программирование, cmake
|
||||||
summary: ""
|
summary: ""
|
||||||
CSS: table-100.css
|
CSS: table-100.css
|
||||||
documentclass: extarticle
|
toc: yes
|
||||||
monofont: Pragmata Pro
|
|
||||||
monofontoptions:
|
monofontoptions:
|
||||||
- Scale=0.7
|
- Scale=0.6
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|
||||||
@ -127,7 +126,7 @@ ORG, Inc.
|
|||||||
```
|
```
|
||||||
|
|
||||||
В файле `cmake/etc/cpack_ignore.txt` перечислить шаблоны
|
В файле `cmake/etc/cpack_ignore.txt` перечислить шаблоны
|
||||||
для исключения из создаваемого целью `dist` архива. Например:
|
для исключения из архива, создаваемого целью `dist`. Например:
|
||||||
|
|
||||||
```
|
```
|
||||||
cmake/lib/.git$
|
cmake/lib/.git$
|
||||||
@ -213,7 +212,7 @@ add_subdirectory(src/libcmex)
|
|||||||
|
|
||||||
В каталоге `cmex/src/libcmex` нужно создать файл `cmex.hpp`:
|
В каталоге `cmex/src/libcmex` нужно создать файл `cmex.hpp`:
|
||||||
|
|
||||||
```c
|
```cpp
|
||||||
#ifndef LIBCMEX_CMEX_HPP_
|
#ifndef LIBCMEX_CMEX_HPP_
|
||||||
#define LIBCMEX_CMEX_HPP_
|
#define LIBCMEX_CMEX_HPP_
|
||||||
|
|
||||||
@ -226,7 +225,7 @@ int32_t cmex_init(int32_t i);
|
|||||||
|
|
||||||
файл `cmex.cpp`:
|
файл `cmex.cpp`:
|
||||||
|
|
||||||
```c
|
```cpp
|
||||||
#include "cmex.hpp"
|
#include "cmex.hpp"
|
||||||
|
|
||||||
int32_t cmex_init(int32_t i = 0) {
|
int32_t cmex_init(int32_t i = 0) {
|
||||||
@ -430,12 +429,24 @@ target_link_libraries(${current_target} ${CMAKE_BINARY_DIR}/lib/libcmext.a)
|
|||||||
|
|
||||||
#include "cmex.hpp"
|
#include "cmex.hpp"
|
||||||
|
|
||||||
|
QTextStream& qStdOut()
|
||||||
|
{
|
||||||
|
static QTextStream ts(stdout);
|
||||||
|
return ts;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
std::cout << CMEX_COMPILER_VERSION_MAJOR << std::endl; // Значение из compiler_features.hpp
|
// Значение из compiler_features.hpp
|
||||||
std::cout << BUILD_TYPE << std::endl; // Значение из config.hpp
|
qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl;
|
||||||
std::cout << CMEX_VERSION_STR << std::endl; // Значение из config.hpp
|
// Значение из config.hpp
|
||||||
std::cout << cmex_init(4) << std::endl; // Функция из внутренней библиотеки
|
qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl;
|
||||||
std::cout << cmext_init(9) << std::endl; // Функция из внешней библиотеки
|
// Значение из config.hpp
|
||||||
|
qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl;
|
||||||
|
// Функция из внутренней библиотеки
|
||||||
|
qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl;
|
||||||
|
// Функция из внешней библиотеки
|
||||||
|
qStdOut() << QObject::tr("libcmext function call: ") << cmext_init(9) << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -482,6 +493,12 @@ target_link_libraries(${current_target} Qt5::Core)
|
|||||||
|
|
||||||
#include "cmex.hpp"
|
#include "cmex.hpp"
|
||||||
|
|
||||||
|
QTextStream& qStdOut()
|
||||||
|
{
|
||||||
|
static QTextStream ts(stdout);
|
||||||
|
return ts;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
QCoreApplication app(argc, argv);
|
QCoreApplication app(argc, argv);
|
||||||
QTranslator translator;
|
QTranslator translator;
|
||||||
@ -490,11 +507,17 @@ int main(int argc, char **argv) {
|
|||||||
{
|
{
|
||||||
app.installTranslator(&translator);
|
app.installTranslator(&translator);
|
||||||
}
|
}
|
||||||
std::cout << QObject::tr("Compiler version: ").toStdString() << CMEX_COMPILER_VERSION_MAJOR << std::endl; // Значение из compiler_features.hpp
|
// Значение из compiler_features.hpp
|
||||||
std::cout << QObject::tr("Project version: ").toStdString() << CMEX_VERSION_STR << std::endl; // Значение из config.hpp
|
qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl;
|
||||||
std::cout << QObject::tr("Build type: ").toStdString() << BUILD_TYPE << std::endl; // Значение из config.hpp
|
// Значение из config.hpp
|
||||||
std::cout << QObject::tr("libcmex function call: ").toStdString() << cmex_init(4) << std::endl; // Функция из внутренней библиотеки
|
qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl;
|
||||||
std::cout << QObject::tr("libcmext function call: ").toStdString() << cmext_init(9) << std::endl; // Функция из внешней библиотеки
|
// Значение из config.hpp
|
||||||
|
qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl;
|
||||||
|
// Функция из внутренней библиотеки
|
||||||
|
qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl;
|
||||||
|
// Функция из внешней библиотеки
|
||||||
|
qStdOut() << QObject::tr("libcmext function call: ") << cmext_init(9) << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -589,6 +612,12 @@ MyMainWindow::~MyMainWindow() {
|
|||||||
#include "cmex.hpp"
|
#include "cmex.hpp"
|
||||||
#include "my_main_window.hpp"
|
#include "my_main_window.hpp"
|
||||||
|
|
||||||
|
QTextStream& qStdOut()
|
||||||
|
{
|
||||||
|
static QTextStream ts(stdout);
|
||||||
|
return ts;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
QTranslator translator;
|
QTranslator translator;
|
||||||
@ -597,11 +626,17 @@ int main(int argc, char **argv) {
|
|||||||
{
|
{
|
||||||
app.installTranslator(&translator);
|
app.installTranslator(&translator);
|
||||||
}
|
}
|
||||||
std::cout << QObject::tr("Compiler version: ").toStdString() << CMEX_COMPILER_VERSION_MAJOR << std::endl; // Значение из compiler_features.hpp
|
|
||||||
std::cout << QObject::tr("Project version: ").toStdString() << CMEX_VERSION_STR << std::endl; // Значение из config.hpp
|
// Значение из compiler_features.hpp
|
||||||
std::cout << QObject::tr("Build type: ").toStdString() << BUILD_TYPE << std::endl; // Значение из config.hpp
|
qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl;
|
||||||
std::cout << QObject::tr("libcmex function call: ").toStdString() << cmex_init(4) << std::endl; // Функция из внутренней библиотеки
|
// Значение из config.hpp
|
||||||
std::cout << QObject::tr("libcmext function call: ").toStdString() << cmext_init(9) << std::endl; // Функция из внешней библиотеки
|
qStdOut() << QObject::tr("Project version: ") << CMEX_VERSION_STR << endl;
|
||||||
|
// Значение из config.hpp
|
||||||
|
qStdOut() << QObject::tr("Build type: ") << BUILD_TYPE << endl;
|
||||||
|
// Функция из внутренней библиотеки
|
||||||
|
qStdOut() << QObject::tr("libcmex function call: ") << cmex_init(4) << endl;
|
||||||
|
// Функция из внешней библиотеки
|
||||||
|
qStdOut() << QObject::tr("libcmext function call: ") << cmext_init(9) << endl;
|
||||||
|
|
||||||
MyMainWindow* mmw = new MyMainWindow();
|
MyMainWindow* mmw = new MyMainWindow();
|
||||||
mmw->show();
|
mmw->show();
|
||||||
|
47
wiki/Prog/GIS/Построение профиля местности в QGis.md
Normal file
47
wiki/Prog/GIS/Построение профиля местности в QGis.md
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
title: "Построение профиля местности в QGis"
|
||||||
|
category: Картография
|
||||||
|
tags: картография, qgis, sxf, shp, gdal
|
||||||
|
summary: ""
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
1) В главном меню QGis **Слой** - **Добавить слой** - **Добавить векторный слой** выбрать и открыть файл с векторным слоем, например, `map.sxf`.
|
||||||
|
|
||||||
|
2) Среди слоёв выбрать слой с рельефом местности и типом геометрии `LineString`.
|
||||||
|
|
||||||
|
![Слои карты](files/qgis-heights1.png)
|
||||||
|
|
||||||
|
3) На панели **Панель слоёв** правой кнопкой мыши щелкнуть на слое,
|
||||||
|
содержащем данные о высотах, и выбрать **Фильтр...**.
|
||||||
|
|
||||||
|
4) Построить выражение выбирающие только данные с высотами, например,
|
||||||
|
`"CLNAME" ILIKE '%ГОРИЗОНТАЛИ ОСНОВ%'` и нажить **OK**.
|
||||||
|
|
||||||
|
5) На панели **Панель слоёв** правой кнопкой мыши щелкнуть на слое,
|
||||||
|
содержащем данные о высотах, и выбрать **Сохранить как...**. Появишийся новый
|
||||||
|
слой **heights** следует удалить.
|
||||||
|
|
||||||
|
6) В появившемся диалоговом окне выбрать имя выходного файла, например, `heights`.
|
||||||
|
|
||||||
|
![Имя выходного файла](files/qgis-heights2.png)
|
||||||
|
|
||||||
|
7) В каталоге `/home/a/work/map` выполнить команду, которая в файле `heights.shp` из слоя `heights` берёт данные о высотах из
|
||||||
|
поля `SC_4` и генерирует матрицу высот размером 2000 на 2000 в формате BMP.
|
||||||
|
Настойки алгоритма посторения матрицы можно изменять с помощью параметра `-a`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
gdal_grid -a invdist:power=3.0:smoothing=1.0 -outsize 2000 2000 -of BMP -ot Byte -zfield SC_4 -l heights heights.shp heights.bmp
|
||||||
|
```
|
||||||
|
|
||||||
|
8) После построения матрицы её можно импортировать в QGis как растровый слой, для этого в главном меню QGis **Слой** - **Добавить слой** - **Добавить растровый слой** нужно выбрать и открыть файл `heights.bmp`. В результате на
|
||||||
|
панели **Панель слоёв** появится растровый слой **heights**.
|
||||||
|
|
||||||
|
9) С помощью модуля Profile Tool можно построить провиль местности. В главном
|
||||||
|
меню нужно выбрать **Модуль** - **Profile Tool** - **Terrain profile**.
|
||||||
|
|
||||||
|
10) На панели **Панель слоёв** нужно перенести растровый слой **heights**
|
||||||
|
в конец списка, выделить его и на панели **Profile Tool** нажать **Add Layer**.
|
||||||
|
После этого на карте можно строить профили местности.
|
||||||
|
|
||||||
|
![Матрица высот](files/qgis-heights3.png)
|
@ -3,9 +3,6 @@ title: "Git: замена адреса подмодуля"
|
|||||||
category: Программирование
|
category: Программирование
|
||||||
tags: программирование, git
|
tags: программирование, git
|
||||||
summary:
|
summary:
|
||||||
CSS: table-100.css
|
|
||||||
documentclass: extarticle
|
|
||||||
monofont: Pragmata Pro
|
|
||||||
monofontoptions:
|
monofontoptions:
|
||||||
- Scale=0.7
|
- Scale=0.7
|
||||||
...
|
...
|
||||||
|
@ -3,9 +3,6 @@ title: "Git: распаковка объекта"
|
|||||||
category: Программирование
|
category: Программирование
|
||||||
tags: программирование, git
|
tags: программирование, git
|
||||||
summary:
|
summary:
|
||||||
CSS: table-100.css
|
|
||||||
documentclass: extarticle
|
|
||||||
monofont: Pragmata Pro
|
|
||||||
monofontoptions:
|
monofontoptions:
|
||||||
- Scale=0.7
|
- Scale=0.7
|
||||||
...
|
...
|
||||||
|
4
wiki/css/table-100.css
Normal file
4
wiki/css/table-100.css
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
table {
|
||||||
|
width: 100%
|
||||||
|
}
|
||||||
|
|
BIN
wiki/files/qgis-heights1.png
Normal file
BIN
wiki/files/qgis-heights1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
BIN
wiki/files/qgis-heights2.png
Normal file
BIN
wiki/files/qgis-heights2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 61 KiB |
BIN
wiki/files/qgis-heights3.png
Normal file
BIN
wiki/files/qgis-heights3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 603 KiB |
Loading…
Reference in New Issue
Block a user