diff --git a/wiki/Prog/CMake/CMake управление проектом.md b/wiki/Prog/CMake/CMake управление проектом.md index 4aa2833..819cb88 100644 --- a/wiki/Prog/CMake/CMake управление проектом.md +++ b/wiki/Prog/CMake/CMake управление проектом.md @@ -4,10 +4,9 @@ category: Программирование tags: программирование, cmake summary: "" CSS: table-100.css -documentclass: extarticle -monofont: Pragmata Pro +toc: yes monofontoptions: -- Scale=0.7 +- Scale=0.6 ... @@ -127,7 +126,7 @@ ORG, Inc. ``` В файле `cmake/etc/cpack_ignore.txt` перечислить шаблоны -для исключения из создаваемого целью `dist` архива. Например: +для исключения из архива, создаваемого целью `dist`. Например: ``` cmake/lib/.git$ @@ -213,7 +212,7 @@ add_subdirectory(src/libcmex) В каталоге `cmex/src/libcmex` нужно создать файл `cmex.hpp`: -```c +```cpp #ifndef LIBCMEX_CMEX_HPP_ #define LIBCMEX_CMEX_HPP_ @@ -226,7 +225,7 @@ int32_t cmex_init(int32_t i); файл `cmex.cpp`: -```c +```cpp #include "cmex.hpp" 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" +QTextStream& qStdOut() +{ + static QTextStream ts(stdout); + return ts; +} + int main(int argc, char **argv) { - std::cout << CMEX_COMPILER_VERSION_MAJOR << std::endl; // Значение из compiler_features.hpp - std::cout << BUILD_TYPE << std::endl; // Значение из config.hpp - std::cout << CMEX_VERSION_STR << std::endl; // Значение из config.hpp - std::cout << cmex_init(4) << std::endl; // Функция из внутренней библиотеки - std::cout << cmext_init(9) << std::endl; // Функция из внешней библиотеки + // Значение из compiler_features.hpp + qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl; + // Значение из config.hpp + 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; + return 0; } ``` @@ -482,6 +493,12 @@ target_link_libraries(${current_target} Qt5::Core) #include "cmex.hpp" +QTextStream& qStdOut() +{ + static QTextStream ts(stdout); + return ts; +} + int main(int argc, char **argv) { QCoreApplication app(argc, argv); QTranslator translator; @@ -490,11 +507,17 @@ int main(int argc, char **argv) { { 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 - std::cout << QObject::tr("Build type: ").toStdString() << BUILD_TYPE << std::endl; // Значение из config.hpp - std::cout << QObject::tr("libcmex function call: ").toStdString() << cmex_init(4) << std::endl; // Функция из внутренней библиотеки - std::cout << QObject::tr("libcmext function call: ").toStdString() << cmext_init(9) << std::endl; // Функция из внешней библиотеки + // Значение из compiler_features.hpp + qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl; + // Значение из config.hpp + 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; + return 0; } ``` @@ -589,6 +612,12 @@ MyMainWindow::~MyMainWindow() { #include "cmex.hpp" #include "my_main_window.hpp" +QTextStream& qStdOut() +{ + static QTextStream ts(stdout); + return ts; +} + int main(int argc, char **argv) { QApplication app(argc, argv); QTranslator translator; @@ -597,11 +626,17 @@ int main(int argc, char **argv) { { 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 - std::cout << QObject::tr("Build type: ").toStdString() << BUILD_TYPE << std::endl; // Значение из config.hpp - std::cout << QObject::tr("libcmex function call: ").toStdString() << cmex_init(4) << std::endl; // Функция из внутренней библиотеки - std::cout << QObject::tr("libcmext function call: ").toStdString() << cmext_init(9) << std::endl; // Функция из внешней библиотеки + + // Значение из compiler_features.hpp + qStdOut() << QObject::tr("Compiler version: ") << CMEX_COMPILER_VERSION_MAJOR << endl; + // Значение из config.hpp + 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(); mmw->show(); diff --git a/wiki/Prog/GIS/Построение профиля местности в QGis.md b/wiki/Prog/GIS/Построение профиля местности в QGis.md new file mode 100644 index 0000000..5fbb3ae --- /dev/null +++ b/wiki/Prog/GIS/Построение профиля местности в QGis.md @@ -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) diff --git a/wiki/Prog/Git/Git замена адреса подмодуля.md b/wiki/Prog/Git/Git замена адреса подмодуля.md index 8dc9e35..0d13b1a 100644 --- a/wiki/Prog/Git/Git замена адреса подмодуля.md +++ b/wiki/Prog/Git/Git замена адреса подмодуля.md @@ -3,9 +3,6 @@ title: "Git: замена адреса подмодуля" category: Программирование tags: программирование, git summary: -CSS: table-100.css -documentclass: extarticle -monofont: Pragmata Pro monofontoptions: - Scale=0.7 ... diff --git a/wiki/Prog/Git/Git распаковка объекта.md b/wiki/Prog/Git/Git распаковка объекта.md index a7198ad..5715fec 100644 --- a/wiki/Prog/Git/Git распаковка объекта.md +++ b/wiki/Prog/Git/Git распаковка объекта.md @@ -3,9 +3,6 @@ title: "Git: распаковка объекта" category: Программирование tags: программирование, git summary: -CSS: table-100.css -documentclass: extarticle -monofont: Pragmata Pro monofontoptions: - Scale=0.7 ... diff --git a/wiki/css/table-100.css b/wiki/css/table-100.css new file mode 100644 index 0000000..ca7f217 --- /dev/null +++ b/wiki/css/table-100.css @@ -0,0 +1,4 @@ +table { + width: 100% +} + diff --git a/wiki/files/qgis-heights1.png b/wiki/files/qgis-heights1.png new file mode 100644 index 0000000..095bbe8 Binary files /dev/null and b/wiki/files/qgis-heights1.png differ diff --git a/wiki/files/qgis-heights2.png b/wiki/files/qgis-heights2.png new file mode 100644 index 0000000..c808d57 Binary files /dev/null and b/wiki/files/qgis-heights2.png differ diff --git a/wiki/files/qgis-heights3.png b/wiki/files/qgis-heights3.png new file mode 100644 index 0000000..7e001fd Binary files /dev/null and b/wiki/files/qgis-heights3.png differ