├── .gitignore ├── CMakeLists.txt ├── COPYING ├── README.md ├── command_line_parser.cpp ├── command_line_parser.h ├── images ├── bar_podvodnii.png ├── bui(cilindricheskii).png ├── bui(konicheskii).png ├── bui(sphericheskii).png ├── bui(stolb).png ├── bui(superbui).png ├── bui(veha).png ├── bui.png ├── centr_recomendovan_puty(2_puty).png ├── centr_recomendovan_puty.png ├── chast_syst_razdel_dvizh.png ├── daymark(nesvetyashii).png ├── element_oblasti.png ├── kabel_navesnoi.png ├── kabel_podvodnii.png ├── kontrolnaya_tochka_peredachi(1 put).png ├── kontrolnaya_tochka_peredachi(1_put).png ├── landmark(bashnya).png ├── landmark(truba).png ├── landmark.png ├── lights_without_sector_G.png ├── lights_without_sector_R.png ├── lights_without_sector_Y.png ├── magnitnoe_sklonenie.png ├── mesto_vstrechi_locmana.png ├── morskaya_ferma.png ├── morskaya_platforma.png ├── oblast_svalki_centr.png ├── oblast_turbulentnosti_vodi.png ├── ostrov.png ├── otd.stroeniya(cerkvi)(vid.rad).png ├── peresechenie_putey.png ├── plavuchii_mayak.png ├── podvodnaya_osihaushaya_skala_with_sign.png ├── podvodnaya_osihaushaya_skala_without_sign.png ├── prds.png ├── preduprezhdenie.png ├── radiolokacionnii_mayak_otvetchik.png ├── raion_lova_ribi_centr.png ├── rastitelnost.png ├── rayon_krugovogo_dvijeniya_centr.png ├── rayon_krugovogo_dvijeniya_fon.png ├── rayon_povishenoi_ostorozhnosti.png ├── rayon_svalki.png ├── rayon_yakornoy_stoyanki.png ├── rekomendovanii_kurs(potok_ne_zadan).png ├── ribolovnie_seti.png ├── shvart.-vert.obor.podvizhnii_pal.png ├── teg(in).png ├── teg(out).png ├── tmp.png ├── topovaya_figura(2_kon_versh_vmeste).png ├── topovaya_figura(2_kon_versh_vniz).png ├── topovaya_figura(2_kon_versh_vroz).png ├── topovaya_figura(2_kon_versh_vverh).png ├── topovaya_figura(2_shara).png ├── topovaya_figura(cilindr).png ├── topovaya_figura(kon_versh_vverh).png ├── topovaya_figura(shar).png ├── truboprovod.png ├── tumanii_signal.png ├── vodorosli.png ├── vorota_kessonnie.png ├── vorota_shluza.png ├── yakornaie_stoyanki_centr.png ├── yakornaie_stoyanki_perim.png ├── yakornaya_stoyanka.png ├── zatonuvshee_sudno.png ├── znak(konstr).png ├── znak(mayak).png ├── znak(veha).png ├── znak_lateralnii(derevo2).png ├── znak_spec.naznacheniya(obshii).png ├── znak_spec.naznacheniya(vishka).png ├── znak_spec.naznacheniya(vnimanie).png ├── zona_prebrejnogo_plavaniya_centr.png ├── zona_prebrejnogo_plavaniya_perim.png ├── Бар подводный.xcf ├── Буй (Супербуй).xcf ├── Буй (Цилиндрический).xcf ├── Буй кардинальный (веха).xcf ├── Буй кардинальный (конический).xcf ├── Буй кардинальный (столб).xcf ├── Буй кардинальный.xcf ├── Буй латеральный (конический).xcf ├── Буй латеральный (цилиндр).xcf ├── Буй латеральный.xcf ├── Буй отд.опасности (веха).xcf ├── Буй спец.назначения (супербуй).xcf ├── Буй чистой воды (сферический).xcf ├── Водоросли.xcf ├── Ворота кессонные.xcf ├── Ворота шлюза.xcf ├── Дневной ориентир (несветящий) 1.xcf ├── Затонувшее судно.xcf ├── Знак латеральный (дерево).xcf ├── Знак латеральный (дерево2).xcf ├── Знак латеральный (констр).xcf ├── Знак латеральный (маяк).xcf ├── Знак спец. назначения (внимение).xcf ├── Знак спец.назначения (веха).xcf ├── Знак спец.назначения (вышка).xcf ├── Знак спец.назначения (констр).xcf ├── Знак спец.назначения (маяк).xcf ├── Знак спец.назначения (общ).xcf ├── Зона пребрежного плавания - периметр.xcf ├── Зона пребрежного плавания - центр.xcf ├── Кабель навесной.xcf ├── Кабель подводный.xcf ├── Контрольная точка передачи (1 путь).xcf ├── Ландмарк (башня).xcf ├── Ландмарк (труба).xcf ├── Ландмарк.xcf ├── Магнитное склонение.xcf ├── Место встречи с лоцманом.xcf ├── Морская платформа.xcf ├── Морская ферма.xcf ├── ОТД.Строения (Церкви) (Вид.рад).xcf ├── Область свалки центр.xcf ├── Область турбулентности воды.xcf ├── Огонь без сектора желтый 0.xcf ├── Огонь без сектора желтый.xcf ├── Огонь без сектора зеленый 0.xcf ├── Огонь без сектора зеленый.xcf ├── Огонь без сектора красный 0.xcf ├── Огонь без сектора красный.xcf ├── Огонь ненаправленый зеленый.xcf ├── Остров.xcf ├── ПРДС.xcf ├── Пересечение путей - фон.xcf ├── Плавучий маяк.xcf ├── Подводная осыхающая скала без подписи.xcf ├── Подводная осыхающая скала с подписью.xcf ├── Предупреждение.xcf ├── Радиолокационный маяк ответчик.xcf ├── Район кругового движения - фон.xcf ├── Район кругового движения - центр.xcf ├── Район лова рыбы - центр.xcf ├── Район повышеной осторожности.xcf ├── Район свалки.xcf ├── Район якорной стоянки.xcf ├── Растительность.xcf ├── Рекомендованный курс (поток не задан).xcf ├── Рыболовные сети.xcf ├── Топовая фигура (2 кон. верш.вверх).xcf ├── Топовая фигура (2 кон. верш.вместе).xcf ├── Топовая фигура (2 кон. верш.вниз).xcf ├── Топовая фигура (2 кон. верш.врозь).xcf ├── Топовая фигура (2 шара).xcf ├── Топовая фигура (кон. верш.вверх).xcf ├── Топовая фигура (цилиндр).xcf ├── Топовая фигура (шар).xcf ├── Трубопровод (на земле, воде).xcf ├── Туманный сигнал.xcf ├── Тэг(закр).xcf ├── Тэг(откр).xcf ├── Центр рекомендованного пути (2 пути).xcf ├── Центр рекомендованного пути.xcf ├── Часть системы разд.движен.xcf ├── Шварт.-верт.обор.подвижный пал.xcf ├── Элемент области.xcf ├── Якорная стоянка.xcf ├── Якорные стоянки (периметр).xcf └── Якорные стоянки (центр).xcf ├── logger.cpp ├── logger.h ├── main.cpp ├── navi2pg.cpp ├── navi2pg.h └── templates ├── mapnik.py.template ├── mapnik.xml.template ├── mapserver.map.template └── symbols └── symbols.sym /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | 6 | # Compiled Dynamic libraries 7 | *.so 8 | *.dylib 9 | 10 | # Compiled Static libraries 11 | *.lai 12 | *.la 13 | *.a 14 | 15 | # build directories 16 | build* 17 | 18 | # generated directories 19 | lib 20 | bin -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 2.8) 2 | 3 | set (PROJECT_NAME "navi2pg") 4 | 5 | project (${PROJECT_NAME}) 6 | 7 | set(CMAKE_COLOR_MAKEFILE ON) 8 | 9 | set (HEADERS 10 | command_line_parser.h 11 | navi2pg.h 12 | logger.h) 13 | 14 | set (SOURCES 15 | command_line_parser.cpp 16 | navi2pg.cpp 17 | logger.cpp 18 | main.cpp) 19 | 20 | find_package(GDAL REQUIRED) 21 | if(GDAL_FOUND) 22 | include_directories(${GDAL_INCLUDE_DIR}) 23 | include_directories(${GDAL_INCLUDE_DIR}/ogr) 24 | include_directories(${GDAL_INCLUDE_DIR}/ogr/ogrsf_frmts) 25 | include_directories(${GDAL_INCLUDE_DIR}/port) 26 | include_directories(${GDAL_INCLUDE_DIR}/gcore) 27 | include_directories(${GDAL_INCLUDE_DIR}/alg) 28 | include_directories(${GDAL_INCLUDE_DIR}/frmts/vrt) 29 | endif(GDAL_FOUND) 30 | 31 | add_executable(${PROJECT_NAME} ${HEADERS} ${SOURCES}) 32 | 33 | target_link_libraries(${PROJECT_NAME} ${GDAL_LIBRARY}) 34 | 35 | install(TARGETS ${PROJECT_NAME} 36 | RUNTIME DESTINATION bin 37 | ARCHIVE DESTINATION lib 38 | LIBRARY DESTINATION lib) 39 | 40 | if(WIN32) 41 | 42 | else(WIN32)#UNIX 43 | install(FILES ${CMAKE_SOURCE_DIR}/templates/mapnik.py.template DESTINATION /usr/local/share/navi2pg) 44 | install(FILES ${CMAKE_SOURCE_DIR}/templates/mapnik.xml.template DESTINATION /usr/local/share/navi2pg) 45 | install(FILES ${CMAKE_SOURCE_DIR}/templates/mapserver.map.template DESTINATION /usr/local/share/navi2pg) 46 | endif() 47 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | 294 | Copyright (C) 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | , 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # navi2pg 2 | Utility to convert data from S57 to a structured PostGIS database 3 | 4 | License 5 | ------------- 6 | This program is licensed under GNU GPL v2 or any later version 7 | -------------------------------------------------------------------------------- /command_line_parser.cpp: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Project: navi2pg 3 | * Purpose: tool to export s57 files into PstGIS and generate map file and mapnik xml 4 | * Author: Alexandr Lisovenko, alexander.lisovenko@gmail.com 5 | ****************************************************************************** 6 | * Copyright (C) 2013-2014 NextGIS 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | ****************************************************************************/ 21 | #include 22 | 23 | #include "ogr_p.h" 24 | #include "cpl_vsi.h" 25 | 26 | #include "command_line_parser.h" 27 | 28 | namespace 29 | { 30 | void Usage() 31 | { 32 | #ifdef WIN32 33 | std::cout << "Usage: navi2ogr [-h] [--help] [-v] [--version] [--sign_cp1251] [--log_level level]"; 34 | std::cout << "[--create_schema]" << " "; 35 | std::cout << "[--schema ]" << " "; 36 | std::cout << NAVI2PG::CommandLineKeys::PG_CONNECTION_STRING << " "; 37 | std::cout << NAVI2PG::CommandLineKeys::S57_DATASOURCE_NAME << " "; 38 | std::cout << NAVI2PG::CommandLineKeys::MAPSERVER_CONFIG_TEMPLATE_FILENAME << " "; 39 | std::cout << NAVI2PG::CommandLineKeys::MAPNIK_CONFIG_TEMPLATE_FILENAME << " "; 40 | std::cout << NAVI2PG::CommandLineKeys::MAPNIK_PYSCRIPT_TEMPLATE_FILENAME; 41 | std::cout << std::endl; 42 | #else 43 | std::cout << "Usage: navi2ogr [-h] [--help] [-v] [--version] [--sign_cp1251] [--log_level level]"; 44 | std::cout << "[--create_schema]" << " "; 45 | std::cout << "[--schema ]" << " "; 46 | std::cout << NAVI2PG::CommandLineKeys::PG_CONNECTION_STRING << " "; 47 | std::cout << NAVI2PG::CommandLineKeys::S57_DATASOURCE_NAME << " "; 48 | std::cout << "["; 49 | std::cout << NAVI2PG::CommandLineKeys::MAPSERVER_CONFIG_TEMPLATE_FILENAME << " "; 50 | std::cout << "["; 51 | std::cout << NAVI2PG::CommandLineKeys::MAPNIK_CONFIG_TEMPLATE_FILENAME << " "; 52 | std::cout << "["; 53 | std::cout << NAVI2PG::CommandLineKeys::MAPNIK_PYSCRIPT_TEMPLATE_FILENAME; 54 | std::cout << "]]]"; 55 | std::cout << std::endl; 56 | #endif 57 | exit( 1 ); 58 | } 59 | } 60 | 61 | NAVI2PG::ValuesCollection NAVI2PG::CommandLineParse(int argc, char* argv[]) 62 | { 63 | ValuesCollection values; 64 | 65 | if( argc < 1 ) 66 | { 67 | Usage(); 68 | exit( -argc ); 69 | } 70 | 71 | if( argc == 1 ) 72 | { 73 | Usage(); 74 | } 75 | 76 | for( int iArg = 1; iArg < argc; iArg++ ) 77 | { 78 | if( EQUAL(argv[iArg], "--version") || 79 | EQUAL(argv[iArg], "-v")) 80 | { 81 | std::cout << "navi2pg version: " << VERSION << std::endl; 82 | exit(0); 83 | } 84 | 85 | else if( EQUAL(argv[iArg],"--help") || 86 | EQUAL(argv[iArg],"-h")) 87 | { 88 | Usage(); 89 | } 90 | 91 | else if( EQUAL(argv[iArg], "--sign_cp1251" ) ) 92 | { 93 | CPLSetConfigOption("NEED_CONVERT_SIGN_TO_CP1251","TRUE"); 94 | } 95 | 96 | else if( EQUAL(argv[iArg], "--log_level" ) ) 97 | { 98 | CPLSetConfigOption(CommandLineKeys::LOG_LEVEL.c_str(), argv[++iArg]); 99 | } 100 | 101 | else if( EQUAL(argv[iArg], "--create_schema" ) ) 102 | { 103 | CPLSetConfigOption(CommandLineKeys::CREATE_SCHEME_FLAG.c_str(), "TRUE"); 104 | } 105 | 106 | else if( EQUAL(argv[iArg], "--schema" ) ) 107 | { 108 | CPLSetConfigOption(CommandLineKeys::SCHEME_NAME.c_str(), argv[++iArg]); 109 | } 110 | 111 | else if( argv[iArg][0] == '-' ) 112 | { 113 | std::cout << "Unknown option name: " << argv[iArg] << std::endl; 114 | Usage(); 115 | } 116 | else if( values.find(CommandLineKeys::PG_CONNECTION_STRING) == values.end()) 117 | { 118 | values[CommandLineKeys::PG_CONNECTION_STRING] = std::string(argv[iArg]); 119 | 120 | } 121 | else if( values.find(CommandLineKeys::S57_DATASOURCE_NAME) == values.end() ) 122 | { 123 | values[CommandLineKeys::S57_DATASOURCE_NAME] = std::string(argv[iArg]); 124 | } 125 | else if( CPLGetConfigOption(CommandLineKeys::MAPSERVER_CONFIG_TEMPLATE_FILENAME.c_str(), NULL) == NULL) 126 | { 127 | CPLSetConfigOption(CommandLineKeys::MAPSERVER_CONFIG_TEMPLATE_FILENAME.c_str(), argv[iArg]); 128 | } 129 | else if( CPLGetConfigOption(CommandLineKeys::MAPNIK_CONFIG_TEMPLATE_FILENAME.c_str(), NULL) == NULL) 130 | { 131 | CPLSetConfigOption(CommandLineKeys::MAPNIK_CONFIG_TEMPLATE_FILENAME.c_str(), argv[iArg]); 132 | } 133 | else if( CPLGetConfigOption(CommandLineKeys::MAPNIK_PYSCRIPT_TEMPLATE_FILENAME.c_str(), NULL) == NULL) 134 | { 135 | CPLSetConfigOption(CommandLineKeys::MAPNIK_PYSCRIPT_TEMPLATE_FILENAME.c_str(), argv[iArg]); 136 | } 137 | } 138 | 139 | return values; 140 | } 141 | -------------------------------------------------------------------------------- /command_line_parser.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Project: navi2pg 3 | * Purpose: tool to export s57 files into PstGIS and generate map file and mapnik xml 4 | * Author: Alexandr Lisovenko, alexander.lisovenko@gmail.com 5 | ****************************************************************************** 6 | * Copyright (C) 2013-2014 NextGIS 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | ****************************************************************************/ 21 | #ifndef NAVI2PG_COMMAND_LINE_PARSER_H 22 | #define NAVI2PG_COMMAND_LINE_PARSER_H 23 | 24 | #include 25 | #include 26 | 27 | #define VERSION "1.3.5" 28 | 29 | namespace NAVI2PG 30 | { 31 | /** 32 | * @brief Параметры командной строки 33 | */ 34 | namespace CommandLineKeys 35 | { 36 | const std::string PG_CONNECTION_STRING = "pg_connection_string"; 37 | const std::string S57_DATASOURCE_NAME = "S57_datasource_name"; 38 | const std::string CREATE_SCHEME_FLAG = "create_scheme_flag"; 39 | const std::string SCHEME_NAME = "scheme_name"; 40 | const std::string LOG_LEVEL = "log_level"; 41 | const std::string MAPSERVER_CONFIG_TEMPLATE_FILENAME = "mapserevr_config_template_filename"; 42 | const std::string MAPNIK_CONFIG_TEMPLATE_FILENAME = "mapnik_config_template_filename"; 43 | const std::string MAPNIK_PYSCRIPT_TEMPLATE_FILENAME = "mapnik_pyscript_template_filename"; 44 | } 45 | 46 | typedef std::map ValuesCollection; 47 | 48 | /** 49 | * @brief Чтение параметров командной строки 50 | * 51 | * @param argc - количество параметров 52 | * @param argv - массив параметров 53 | * 54 | * @return значения параметров запуска приложения 55 | */ 56 | ValuesCollection CommandLineParse(int argc, char* argv[]); 57 | } 58 | #endif // COMMAND_LINE_PARSER_H 59 | -------------------------------------------------------------------------------- /images/bar_podvodnii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/bar_podvodnii.png -------------------------------------------------------------------------------- /images/bui(cilindricheskii).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/bui(cilindricheskii).png -------------------------------------------------------------------------------- /images/bui(konicheskii).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/bui(konicheskii).png -------------------------------------------------------------------------------- /images/bui(sphericheskii).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/bui(sphericheskii).png -------------------------------------------------------------------------------- /images/bui(stolb).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/bui(stolb).png -------------------------------------------------------------------------------- /images/bui(superbui).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/bui(superbui).png -------------------------------------------------------------------------------- /images/bui(veha).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/bui(veha).png -------------------------------------------------------------------------------- /images/bui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/bui.png -------------------------------------------------------------------------------- /images/centr_recomendovan_puty(2_puty).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/centr_recomendovan_puty(2_puty).png -------------------------------------------------------------------------------- /images/centr_recomendovan_puty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/centr_recomendovan_puty.png -------------------------------------------------------------------------------- /images/chast_syst_razdel_dvizh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/chast_syst_razdel_dvizh.png -------------------------------------------------------------------------------- /images/daymark(nesvetyashii).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/daymark(nesvetyashii).png -------------------------------------------------------------------------------- /images/element_oblasti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/element_oblasti.png -------------------------------------------------------------------------------- /images/kabel_navesnoi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/kabel_navesnoi.png -------------------------------------------------------------------------------- /images/kabel_podvodnii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/kabel_podvodnii.png -------------------------------------------------------------------------------- /images/kontrolnaya_tochka_peredachi(1 put).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/kontrolnaya_tochka_peredachi(1 put).png -------------------------------------------------------------------------------- /images/kontrolnaya_tochka_peredachi(1_put).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/kontrolnaya_tochka_peredachi(1_put).png -------------------------------------------------------------------------------- /images/landmark(bashnya).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/landmark(bashnya).png -------------------------------------------------------------------------------- /images/landmark(truba).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/landmark(truba).png -------------------------------------------------------------------------------- /images/landmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/landmark.png -------------------------------------------------------------------------------- /images/lights_without_sector_G.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/lights_without_sector_G.png -------------------------------------------------------------------------------- /images/lights_without_sector_R.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/lights_without_sector_R.png -------------------------------------------------------------------------------- /images/lights_without_sector_Y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/lights_without_sector_Y.png -------------------------------------------------------------------------------- /images/magnitnoe_sklonenie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/magnitnoe_sklonenie.png -------------------------------------------------------------------------------- /images/mesto_vstrechi_locmana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/mesto_vstrechi_locmana.png -------------------------------------------------------------------------------- /images/morskaya_ferma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/morskaya_ferma.png -------------------------------------------------------------------------------- /images/morskaya_platforma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/morskaya_platforma.png -------------------------------------------------------------------------------- /images/oblast_svalki_centr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/oblast_svalki_centr.png -------------------------------------------------------------------------------- /images/oblast_turbulentnosti_vodi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/oblast_turbulentnosti_vodi.png -------------------------------------------------------------------------------- /images/ostrov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/ostrov.png -------------------------------------------------------------------------------- /images/otd.stroeniya(cerkvi)(vid.rad).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/otd.stroeniya(cerkvi)(vid.rad).png -------------------------------------------------------------------------------- /images/peresechenie_putey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/peresechenie_putey.png -------------------------------------------------------------------------------- /images/plavuchii_mayak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/plavuchii_mayak.png -------------------------------------------------------------------------------- /images/podvodnaya_osihaushaya_skala_with_sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/podvodnaya_osihaushaya_skala_with_sign.png -------------------------------------------------------------------------------- /images/podvodnaya_osihaushaya_skala_without_sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/podvodnaya_osihaushaya_skala_without_sign.png -------------------------------------------------------------------------------- /images/prds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/prds.png -------------------------------------------------------------------------------- /images/preduprezhdenie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/preduprezhdenie.png -------------------------------------------------------------------------------- /images/radiolokacionnii_mayak_otvetchik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/radiolokacionnii_mayak_otvetchik.png -------------------------------------------------------------------------------- /images/raion_lova_ribi_centr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/raion_lova_ribi_centr.png -------------------------------------------------------------------------------- /images/rastitelnost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/rastitelnost.png -------------------------------------------------------------------------------- /images/rayon_krugovogo_dvijeniya_centr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/rayon_krugovogo_dvijeniya_centr.png -------------------------------------------------------------------------------- /images/rayon_krugovogo_dvijeniya_fon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/rayon_krugovogo_dvijeniya_fon.png -------------------------------------------------------------------------------- /images/rayon_povishenoi_ostorozhnosti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/rayon_povishenoi_ostorozhnosti.png -------------------------------------------------------------------------------- /images/rayon_svalki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/rayon_svalki.png -------------------------------------------------------------------------------- /images/rayon_yakornoy_stoyanki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/rayon_yakornoy_stoyanki.png -------------------------------------------------------------------------------- /images/rekomendovanii_kurs(potok_ne_zadan).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/rekomendovanii_kurs(potok_ne_zadan).png -------------------------------------------------------------------------------- /images/ribolovnie_seti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/ribolovnie_seti.png -------------------------------------------------------------------------------- /images/shvart.-vert.obor.podvizhnii_pal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/shvart.-vert.obor.podvizhnii_pal.png -------------------------------------------------------------------------------- /images/teg(in).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/teg(in).png -------------------------------------------------------------------------------- /images/teg(out).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/teg(out).png -------------------------------------------------------------------------------- /images/tmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/tmp.png -------------------------------------------------------------------------------- /images/topovaya_figura(2_kon_versh_vmeste).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/topovaya_figura(2_kon_versh_vmeste).png -------------------------------------------------------------------------------- /images/topovaya_figura(2_kon_versh_vniz).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/topovaya_figura(2_kon_versh_vniz).png -------------------------------------------------------------------------------- /images/topovaya_figura(2_kon_versh_vroz).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/topovaya_figura(2_kon_versh_vroz).png -------------------------------------------------------------------------------- /images/topovaya_figura(2_kon_versh_vverh).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/topovaya_figura(2_kon_versh_vverh).png -------------------------------------------------------------------------------- /images/topovaya_figura(2_shara).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/topovaya_figura(2_shara).png -------------------------------------------------------------------------------- /images/topovaya_figura(cilindr).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/topovaya_figura(cilindr).png -------------------------------------------------------------------------------- /images/topovaya_figura(kon_versh_vverh).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/topovaya_figura(kon_versh_vverh).png -------------------------------------------------------------------------------- /images/topovaya_figura(shar).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/topovaya_figura(shar).png -------------------------------------------------------------------------------- /images/truboprovod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/truboprovod.png -------------------------------------------------------------------------------- /images/tumanii_signal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/tumanii_signal.png -------------------------------------------------------------------------------- /images/vodorosli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/vodorosli.png -------------------------------------------------------------------------------- /images/vorota_kessonnie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/vorota_kessonnie.png -------------------------------------------------------------------------------- /images/vorota_shluza.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/vorota_shluza.png -------------------------------------------------------------------------------- /images/yakornaie_stoyanki_centr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/yakornaie_stoyanki_centr.png -------------------------------------------------------------------------------- /images/yakornaie_stoyanki_perim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/yakornaie_stoyanki_perim.png -------------------------------------------------------------------------------- /images/yakornaya_stoyanka.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/yakornaya_stoyanka.png -------------------------------------------------------------------------------- /images/zatonuvshee_sudno.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/zatonuvshee_sudno.png -------------------------------------------------------------------------------- /images/znak(konstr).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/znak(konstr).png -------------------------------------------------------------------------------- /images/znak(mayak).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/znak(mayak).png -------------------------------------------------------------------------------- /images/znak(veha).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/znak(veha).png -------------------------------------------------------------------------------- /images/znak_lateralnii(derevo2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/znak_lateralnii(derevo2).png -------------------------------------------------------------------------------- /images/znak_spec.naznacheniya(obshii).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/znak_spec.naznacheniya(obshii).png -------------------------------------------------------------------------------- /images/znak_spec.naznacheniya(vishka).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/znak_spec.naznacheniya(vishka).png -------------------------------------------------------------------------------- /images/znak_spec.naznacheniya(vnimanie).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/znak_spec.naznacheniya(vnimanie).png -------------------------------------------------------------------------------- /images/zona_prebrejnogo_plavaniya_centr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/zona_prebrejnogo_plavaniya_centr.png -------------------------------------------------------------------------------- /images/zona_prebrejnogo_plavaniya_perim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/zona_prebrejnogo_plavaniya_perim.png -------------------------------------------------------------------------------- /images/Бар подводный.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Бар подводный.xcf -------------------------------------------------------------------------------- /images/Буй (Супербуй).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй (Супербуй).xcf -------------------------------------------------------------------------------- /images/Буй (Цилиндрический).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй (Цилиндрический).xcf -------------------------------------------------------------------------------- /images/Буй кардинальный (веха).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй кардинальный (веха).xcf -------------------------------------------------------------------------------- /images/Буй кардинальный (конический).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй кардинальный (конический).xcf -------------------------------------------------------------------------------- /images/Буй кардинальный (столб).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй кардинальный (столб).xcf -------------------------------------------------------------------------------- /images/Буй кардинальный.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй кардинальный.xcf -------------------------------------------------------------------------------- /images/Буй латеральный (конический).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй латеральный (конический).xcf -------------------------------------------------------------------------------- /images/Буй латеральный (цилиндр).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй латеральный (цилиндр).xcf -------------------------------------------------------------------------------- /images/Буй латеральный.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй латеральный.xcf -------------------------------------------------------------------------------- /images/Буй отд.опасности (веха).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй отд.опасности (веха).xcf -------------------------------------------------------------------------------- /images/Буй спец.назначения (супербуй).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй спец.назначения (супербуй).xcf -------------------------------------------------------------------------------- /images/Буй чистой воды (сферический).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Буй чистой воды (сферический).xcf -------------------------------------------------------------------------------- /images/Водоросли.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Водоросли.xcf -------------------------------------------------------------------------------- /images/Ворота кессонные.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Ворота кессонные.xcf -------------------------------------------------------------------------------- /images/Ворота шлюза.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Ворота шлюза.xcf -------------------------------------------------------------------------------- /images/Дневной ориентир (несветящий) 1.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Дневной ориентир (несветящий) 1.xcf -------------------------------------------------------------------------------- /images/Затонувшее судно.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Затонувшее судно.xcf -------------------------------------------------------------------------------- /images/Знак латеральный (дерево).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак латеральный (дерево).xcf -------------------------------------------------------------------------------- /images/Знак латеральный (дерево2).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак латеральный (дерево2).xcf -------------------------------------------------------------------------------- /images/Знак латеральный (констр).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак латеральный (констр).xcf -------------------------------------------------------------------------------- /images/Знак латеральный (маяк).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак латеральный (маяк).xcf -------------------------------------------------------------------------------- /images/Знак спец. назначения (внимение).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак спец. назначения (внимение).xcf -------------------------------------------------------------------------------- /images/Знак спец.назначения (веха).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак спец.назначения (веха).xcf -------------------------------------------------------------------------------- /images/Знак спец.назначения (вышка).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак спец.назначения (вышка).xcf -------------------------------------------------------------------------------- /images/Знак спец.назначения (констр).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак спец.назначения (констр).xcf -------------------------------------------------------------------------------- /images/Знак спец.назначения (маяк).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак спец.назначения (маяк).xcf -------------------------------------------------------------------------------- /images/Знак спец.назначения (общ).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Знак спец.назначения (общ).xcf -------------------------------------------------------------------------------- /images/Зона пребрежного плавания - периметр.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Зона пребрежного плавания - периметр.xcf -------------------------------------------------------------------------------- /images/Зона пребрежного плавания - центр.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Зона пребрежного плавания - центр.xcf -------------------------------------------------------------------------------- /images/Кабель навесной.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Кабель навесной.xcf -------------------------------------------------------------------------------- /images/Кабель подводный.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Кабель подводный.xcf -------------------------------------------------------------------------------- /images/Контрольная точка передачи (1 путь).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Контрольная точка передачи (1 путь).xcf -------------------------------------------------------------------------------- /images/Ландмарк (башня).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Ландмарк (башня).xcf -------------------------------------------------------------------------------- /images/Ландмарк (труба).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Ландмарк (труба).xcf -------------------------------------------------------------------------------- /images/Ландмарк.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Ландмарк.xcf -------------------------------------------------------------------------------- /images/Магнитное склонение.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Магнитное склонение.xcf -------------------------------------------------------------------------------- /images/Место встречи с лоцманом.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Место встречи с лоцманом.xcf -------------------------------------------------------------------------------- /images/Морская платформа.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Морская платформа.xcf -------------------------------------------------------------------------------- /images/Морская ферма.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Морская ферма.xcf -------------------------------------------------------------------------------- /images/ОТД.Строения (Церкви) (Вид.рад).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/ОТД.Строения (Церкви) (Вид.рад).xcf -------------------------------------------------------------------------------- /images/Область свалки центр.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Область свалки центр.xcf -------------------------------------------------------------------------------- /images/Область турбулентности воды.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Область турбулентности воды.xcf -------------------------------------------------------------------------------- /images/Огонь без сектора желтый 0.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Огонь без сектора желтый 0.xcf -------------------------------------------------------------------------------- /images/Огонь без сектора желтый.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Огонь без сектора желтый.xcf -------------------------------------------------------------------------------- /images/Огонь без сектора зеленый 0.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Огонь без сектора зеленый 0.xcf -------------------------------------------------------------------------------- /images/Огонь без сектора зеленый.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Огонь без сектора зеленый.xcf -------------------------------------------------------------------------------- /images/Огонь без сектора красный 0.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Огонь без сектора красный 0.xcf -------------------------------------------------------------------------------- /images/Огонь без сектора красный.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Огонь без сектора красный.xcf -------------------------------------------------------------------------------- /images/Огонь ненаправленый зеленый.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Огонь ненаправленый зеленый.xcf -------------------------------------------------------------------------------- /images/Остров.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Остров.xcf -------------------------------------------------------------------------------- /images/ПРДС.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/ПРДС.xcf -------------------------------------------------------------------------------- /images/Пересечение путей - фон.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Пересечение путей - фон.xcf -------------------------------------------------------------------------------- /images/Плавучий маяк.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Плавучий маяк.xcf -------------------------------------------------------------------------------- /images/Подводная осыхающая скала без подписи.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Подводная осыхающая скала без подписи.xcf -------------------------------------------------------------------------------- /images/Подводная осыхающая скала с подписью.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Подводная осыхающая скала с подписью.xcf -------------------------------------------------------------------------------- /images/Предупреждение.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Предупреждение.xcf -------------------------------------------------------------------------------- /images/Радиолокационный маяк ответчик.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Радиолокационный маяк ответчик.xcf -------------------------------------------------------------------------------- /images/Район кругового движения - фон.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Район кругового движения - фон.xcf -------------------------------------------------------------------------------- /images/Район кругового движения - центр.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Район кругового движения - центр.xcf -------------------------------------------------------------------------------- /images/Район лова рыбы - центр.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Район лова рыбы - центр.xcf -------------------------------------------------------------------------------- /images/Район повышеной осторожности.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Район повышеной осторожности.xcf -------------------------------------------------------------------------------- /images/Район свалки.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Район свалки.xcf -------------------------------------------------------------------------------- /images/Район якорной стоянки.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Район якорной стоянки.xcf -------------------------------------------------------------------------------- /images/Растительность.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Растительность.xcf -------------------------------------------------------------------------------- /images/Рекомендованный курс (поток не задан).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Рекомендованный курс (поток не задан).xcf -------------------------------------------------------------------------------- /images/Рыболовные сети.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Рыболовные сети.xcf -------------------------------------------------------------------------------- /images/Топовая фигура (2 кон. верш.вверх).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Топовая фигура (2 кон. верш.вверх).xcf -------------------------------------------------------------------------------- /images/Топовая фигура (2 кон. верш.вместе).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Топовая фигура (2 кон. верш.вместе).xcf -------------------------------------------------------------------------------- /images/Топовая фигура (2 кон. верш.вниз).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Топовая фигура (2 кон. верш.вниз).xcf -------------------------------------------------------------------------------- /images/Топовая фигура (2 кон. верш.врозь).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Топовая фигура (2 кон. верш.врозь).xcf -------------------------------------------------------------------------------- /images/Топовая фигура (2 шара).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Топовая фигура (2 шара).xcf -------------------------------------------------------------------------------- /images/Топовая фигура (кон. верш.вверх).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Топовая фигура (кон. верш.вверх).xcf -------------------------------------------------------------------------------- /images/Топовая фигура (цилиндр).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Топовая фигура (цилиндр).xcf -------------------------------------------------------------------------------- /images/Топовая фигура (шар).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Топовая фигура (шар).xcf -------------------------------------------------------------------------------- /images/Трубопровод (на земле, воде).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Трубопровод (на земле, воде).xcf -------------------------------------------------------------------------------- /images/Туманный сигнал.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Туманный сигнал.xcf -------------------------------------------------------------------------------- /images/Тэг(закр).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Тэг(закр).xcf -------------------------------------------------------------------------------- /images/Тэг(откр).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Тэг(откр).xcf -------------------------------------------------------------------------------- /images/Центр рекомендованного пути (2 пути).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Центр рекомендованного пути (2 пути).xcf -------------------------------------------------------------------------------- /images/Центр рекомендованного пути.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Центр рекомендованного пути.xcf -------------------------------------------------------------------------------- /images/Часть системы разд.движен.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Часть системы разд.движен.xcf -------------------------------------------------------------------------------- /images/Шварт.-верт.обор.подвижный пал.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Шварт.-верт.обор.подвижный пал.xcf -------------------------------------------------------------------------------- /images/Элемент области.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Элемент области.xcf -------------------------------------------------------------------------------- /images/Якорная стоянка.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Якорная стоянка.xcf -------------------------------------------------------------------------------- /images/Якорные стоянки (периметр).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Якорные стоянки (периметр).xcf -------------------------------------------------------------------------------- /images/Якорные стоянки (центр).xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/images/Якорные стоянки (центр).xcf -------------------------------------------------------------------------------- /logger.cpp: -------------------------------------------------------------------------------- 1 | #include "logger.h" 2 | 3 | void NAVI2PG::LOGGER::printLogMessage(LOG_LEVEL logLevel, const char* msg) 4 | { 5 | if(logLevel > LogLevel) 6 | return; 7 | 8 | 9 | 10 | switch (logLevel) 11 | { 12 | case LOG_LEVEL_ERROR: 13 | std::cout << "ERROR: "; 14 | break; 15 | case LOG_LEVEL_WARNING: 16 | std::cout << "WARNING: "; 17 | break; 18 | case LOG_LEVEL_INFO: 19 | std::cout << "INFO: "; 20 | break; 21 | case LOG_LEVEL_DEBUG: 22 | std::cout << "DEBUG: "; 23 | break; 24 | case LOG_LEVEL_DEBUG_1: 25 | std::cout << "DEBUG_1: "; 26 | break; 27 | case LOG_LEVEL_DEBUG_2: 28 | std::cout << "DEBUG_2: "; 29 | break; 30 | default: 31 | break; 32 | } 33 | 34 | std::cout << msg << std::endl; 35 | } 36 | 37 | void NAVI2PG::LOGGER::SetLogLevel(LOG_LEVEL logLevel) 38 | { 39 | LogLevel = logLevel; 40 | } 41 | -------------------------------------------------------------------------------- /logger.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Project: navi2pg 3 | * Purpose: tool to export s57 files into PstGIS and generate map file and mapnik xml 4 | * Author: Alexandr Lisovenko, alexander.lisovenko@gmail.com 5 | ****************************************************************************** 6 | * Copyright (C) 2013-2014 NextGIS 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | ****************************************************************************/ 21 | 22 | #ifndef LOGGER_H 23 | #define LOGGER_H 24 | 25 | #include 26 | 27 | /** 28 | * namespace NAVI2PG 29 | * @brief Импортирование данных из файла формата s57 в БД PostgreSQL 30 | */ 31 | namespace NAVI2PG { 32 | 33 | /** 34 | * namespace LOGGER 35 | * @brief Логгирование 36 | */ 37 | namespace LOGGER { 38 | 39 | enum LOG_LEVEL 40 | { 41 | LOG_LEVEL_ERROR = 0, 42 | LOG_LEVEL_WARNING, 43 | LOG_LEVEL_INFO, 44 | LOG_LEVEL_DEBUG, 45 | LOG_LEVEL_DEBUG_1, 46 | LOG_LEVEL_DEBUG_2 47 | }; 48 | 49 | void printLogMessage(LOG_LEVEL logLevel, const char* msg); 50 | 51 | static NAVI2PG::LOGGER::LOG_LEVEL LogLevel = NAVI2PG::LOGGER::LOG_LEVEL_INFO; 52 | 53 | void SetLogLevel(LOG_LEVEL logLevel); 54 | } 55 | } 56 | 57 | #define LOG(msg) std::cout << msg << std::endl; 58 | #define LLOG(logLevel, msg) NAVI2PG::LOGGER::printLogMessage(logLevel, msg) 59 | 60 | 61 | #endif // LOGGER_H 62 | -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Project: navi2pg 3 | * Purpose: tool to export s57 files into PstGIS and generate map file and mapnik xml 4 | * Author: Alexandr Lisovenko, alexander.lisovenko@gmail.com 5 | ****************************************************************************** 6 | * Copyright (C) 2013-2014 NextGIS 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | ****************************************************************************/ 21 | #include "ogrsf_frmts.h" 22 | 23 | #include "command_line_parser.h" 24 | #include "navi2pg.h" 25 | #include "logger.h" 26 | 27 | /** 28 | * @brief Чтение параметров командной строки, инициализация процедуры импорта данных из s57 в PostgresSQL 29 | * 30 | * Вызов 31 | * navi2pg [-h] [--help] [-v] [--version] [--sign_cp1251] [--create_schema] [--schema ] 32 | * 33 | * Описание 34 | * Утилита производит импорт данных из файла формата S57 в БД PostgreSQL, 35 | * для дальнейшего ипользования этих данных при построении карт средствами 36 | * серверной геоинформационной системы MapServer. 37 | * 38 | * Утилита использует в своей работе библиотеку GDAL\OGR 39 | * 40 | * -h (или --help): 41 | * Вывод справки на экран 42 | * 43 | * -v (или --version): 44 | * Вывод версии утилиты на экран 45 | * 46 | * --sign_cp1251: 47 | * Указать, если подписи в S57 находятся в кодировке CP1251 48 | * 49 | * --create_schema: 50 | * Указать, если схему нужно создать автоматически 51 | * 52 | * --schema : 53 | * Имя схемы из pg_connection_string куда будут импортированы данные, 54 | * если не задано, то имя схемы будет соответствовать имени файла - источника данных 55 | * 56 | * pg_connection_string: 57 | * Источник данных PostgreSQL в формате поддерживаемом OGR 58 | * 59 | * S57_datasource_name: 60 | * Источник данных S57 в формате поддерживаемом OGR 61 | * 62 | * mapserevr_config_template_filename 63 | * Полный путь до файла-шаблона конфигурации (MapServer) 64 | * 65 | * mapnik_config_template_filename 66 | * Полный путь до файла-шаблона конфигурации (mapnik) 67 | * 68 | * mapnik_pyscript_template_filename 69 | * Полный путь до скрипта гененрации png (mapnik) 70 | * 71 | * Пример использования: 72 | * 1. Импорт данных из файла RU5NSKO0.000 в локальную БД с именем RU5NSKO0 73 | * 74 | * navi2pg PG:"dbname='RU5NSKO0' user='postgres' password='tochange'" ..\S57\RU5NSKO0.000 ./mapserver.map.template ./mapnik.xml.template mapnik.py.template 75 | * 76 | * 2. Просмотр версии утилиты 77 | * 78 | * navi2pg -v 79 | * 80 | */ 81 | int main(int nArgc, char ** papszArgv) 82 | { 83 | 84 | NAVI2PG::ValuesCollection valuesCollection = NAVI2PG::CommandLineParse(nArgc, papszArgv); 85 | 86 | const char* log_level = CPLGetConfigOption(NAVI2PG::CommandLineKeys::LOG_LEVEL.c_str(),NULL); 87 | if (log_level != NULL) 88 | NAVI2PG::LOGGER::SetLogLevel((NAVI2PG::LOGGER::LOG_LEVEL)atoi(log_level)); 89 | 90 | const char *pszS57DataSource = 91 | valuesCollection[NAVI2PG::CommandLineKeys::S57_DATASOURCE_NAME].c_str(); 92 | const char *pszPGConnectionString = 93 | valuesCollection[NAVI2PG::CommandLineKeys::PG_CONNECTION_STRING].c_str(); 94 | 95 | NAVI2PG::Import(pszS57DataSource, pszPGConnectionString); 96 | 97 | return 0; 98 | } 99 | 100 | -------------------------------------------------------------------------------- /navi2pg.h: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Project: navi2pg 3 | * Purpose: tool to export s57 files into PstGIS and generate map file and mapnik xml 4 | * Author: Alexandr Lisovenko, alexander.lisovenko@gmail.com 5 | ****************************************************************************** 6 | * Copyright (C) 2013-2014 NextGIS 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation, either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program. If not, see . 20 | ****************************************************************************/ 21 | #ifndef NAVI2PG_H 22 | #define NAVI2PG_H 23 | 24 | #include 25 | #include 26 | 27 | #include "ogr_api.h" 28 | #include "ogrsf_frmts.h" 29 | 30 | #include "logger.h" 31 | 32 | #define TO_DEGREES 57.2957795130823208766 33 | #define TO_RADIANS 0.017453292519943295769 34 | 35 | /** 36 | * namespace NAVI2PG 37 | * @brief Импортирование данных из файла формата s57 в БД PostgreSQL 38 | */ 39 | namespace NAVI2PG { 40 | 41 | /** 42 | * @brief Абстрактный класс представляющий интерфейс стратегии добавления новых полей в таблицы. 43 | */ 44 | class AddNewFieldStrategy 45 | { 46 | public: 47 | AddNewFieldStrategy(){} 48 | /** 49 | * @brief Абстрактный метод. Исполнение стратегии. 50 | * @param dstFeature Запись, в которую производится добавление новых полей 51 | * @param srcFeature Запись-источник данных, на основании которых формируется значение новых полей 52 | */ 53 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature) = 0; 54 | /** 55 | * @brief Абстрактный метод. Возвращает описание новых полей. 56 | * @return Вектор описаний полей, добавляемых данной стратегией. 57 | */ 58 | virtual std::vector GetOGRFieldDefn() = 0; 59 | }; 60 | 61 | /** 62 | * @brief Абстрактный класс, представляющий интерфейс стратегии редактирования поля "type". 63 | */ 64 | class ModifyTypeField: public AddNewFieldStrategy 65 | { 66 | public: 67 | ModifyTypeField(){} 68 | /** 69 | * @brief Абстрактный метод. Исполнение стратегии. 70 | * @param dstFeature Запись, поле которой подвергается редактированию 71 | * @param srcFeature Запись-источник, данных на основании которых редактируются значения полей 72 | */ 73 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature) = 0; 74 | virtual std::vector GetOGRFieldDefn(); 75 | }; 76 | 77 | /** 78 | * @brief Класс, представляющий стратегию редактирования поля type объектов BOYCAR, BOYLAT, BOYSPP, BOYISD, BOYSAW на основании данных поля BOYSHP. 79 | * BOYSHP - форма буя 80 | */ 81 | class BOYSpecify: public ModifyTypeField 82 | { 83 | public: 84 | BOYSpecify(){} 85 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 86 | }; 87 | 88 | /** 89 | * @brief Класс, представляющий стратегию редактирования поля type на основании данных поля BCNSHP. 90 | * BCNSHP - форма знака 91 | */ 92 | class BCNLATSpecify: public ModifyTypeField 93 | { 94 | public: 95 | BCNLATSpecify(){} 96 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 97 | }; 98 | 99 | /** 100 | * @brief Класс, представляющий стратегию редактирования поля type на основании данных полей BCNSHP и CATSPM. 101 | * BCNSHP - форма знака 102 | * CATSPM - Категория знака специального назначения 103 | */ 104 | class BCNSPPSpecify: public ModifyTypeField 105 | { 106 | public: 107 | BCNSPPSpecify(){} 108 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 109 | }; 110 | 111 | /** 112 | * @brief Класс, представляющий стратегию редактирования поля type на основании полей SECTR1 и SECTR2. 113 | */ 114 | class SECTRSpecify: public ModifyTypeField 115 | { 116 | public: 117 | SECTRSpecify(){} 118 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 119 | }; 120 | /** 121 | * @brief Класс, представляющий стратегию редактирования поля type на основании поля COLOUR. 122 | */ 123 | class COLOURSpecify: public ModifyTypeField 124 | { 125 | public: 126 | COLOURSpecify(){} 127 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 128 | }; 129 | /** 130 | * @brief Класс, представляющий стратегию редактирования поля type на основании поля наличия значения в поле ORIENT. 131 | */ 132 | class ORIENTPresenceSpecify: public ModifyTypeField 133 | { 134 | public: 135 | ORIENTPresenceSpecify(){} 136 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 137 | }; 138 | /** 139 | * @brief Класс, представляющий стратегию редактирования поля type на основании поля TOPSHP - форма топовой фигуры. 140 | */ 141 | class TOPSHPSpecify: public ModifyTypeField 142 | { 143 | public: 144 | TOPSHPSpecify(){} 145 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 146 | }; 147 | /** 148 | * @brief Класс, представляющий стратегию редактирования поля type на основании поля CONVIS - визуально приметный. 149 | */ 150 | class CONVISSpecify: public ModifyTypeField 151 | { 152 | public: 153 | CONVISSpecify(){} 154 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 155 | }; 156 | /** 157 | * @brief Класс, представляющий стратегию редактирования поля type на основании поля CATLMK - ктегория берегового ориентира. 158 | */ 159 | class CATLMKSpecify: public ModifyTypeField 160 | { 161 | public: 162 | CATLMKSpecify(){} 163 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 164 | }; 165 | /** 166 | * @brief Класс, представляющий стратегию редактирования поля type на основании поля CATNAV - ктегория навигационного створа. 167 | */ 168 | class CATNAVSpecify: public ModifyTypeField 169 | { 170 | public: 171 | CATNAVSpecify(){} 172 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 173 | }; 174 | /** 175 | * @brief Класс, представляющий стратегию редактирования поля type на основании поля TRAFIC - поток движения. 176 | */ 177 | class TRAFICSpecify: public ModifyTypeField 178 | { 179 | public: 180 | TRAFICSpecify(){} 181 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 182 | }; 183 | /** 184 | * @brief Класс, представляющий стратегию редактирования поля type на основании поля CATSLC - категория берогового сооружения. 185 | */ 186 | class CATSLCSpecify: public ModifyTypeField 187 | { 188 | public: 189 | CATSLCSpecify(){} 190 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 191 | }; 192 | 193 | /** 194 | * @brief Класс-стратегия для добавления полей, содержащих подписи на английском и русском языках name_en и name_ru, 195 | * на основе данных из полей OBJNAM и NOBJNM 196 | */ 197 | class AddSignatures: public AddNewFieldStrategy 198 | { 199 | public: 200 | AddSignatures(){} 201 | 202 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 203 | virtual std::vector GetOGRFieldDefn(); 204 | }; 205 | 206 | /** 207 | * @brief Класс-стратегия для добавления полей, содержащих подписи на английском и русском языках name_en и name_ru, 208 | * для объектов "Огни", на основе данных из полей CATLIT, SIGPER, HEIGHT, VALNMR, SIGGRP, LITCHR, COLOUR 209 | */ 210 | class AddLightsSignatures: public AddSignatures 211 | { 212 | public: 213 | AddLightsSignatures(){} 214 | void Execute(OGRFeature* dstFeatures, OGRFeature* srcFeature); 215 | private: 216 | /** 217 | * @brief Вспомогательная функция, возвращает первую часть подписи 218 | */ 219 | CPLString GetFirstPartOfSig(OGRFeature* srcFeature, bool withSIGGRP); 220 | }; 221 | 222 | /** 223 | * @brief Класс-стратегия для добавления полей, содержащих подписи на английском и русском языках name_en и name_ru. 224 | * Подписи содержат информацию об углах поворота в пространстве, на основе значения поля ORIENT - Ориентация. 225 | * Формат подписи: "1.02 deg" и "3.21 град" 226 | * 227 | */ 228 | class AddORIENTSignatures: public AddSignatures 229 | { 230 | public: 231 | AddORIENTSignatures(){} 232 | 233 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 234 | }; 235 | 236 | /** 237 | * @brief Класс-стратегия для добавления поля orient, содержащего угол поворота по часовой стрелке от направления на север. 238 | * На основе значения поля ORIENT - Ориентация 239 | */ 240 | class AddORIENTasExtFields: public AddNewFieldStrategy 241 | { 242 | public: 243 | AddORIENTasExtFields(){} 244 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 245 | virtual std::vector GetOGRFieldDefn(); 246 | }; 247 | 248 | /** 249 | * @brief Класс-стратегия для добавления полей, содержащих подписи на английском и русском языках name_en и name_ru. 250 | * Подписи содержат информацию о материалах поверхности, на основе значения поля NATSUR - Материал поверхности. 251 | */ 252 | class AddNATSURSignatures: public AddSignatures 253 | { 254 | std::map SurfaceMaterial_; 255 | public: 256 | AddNATSURSignatures() 257 | { 258 | SurfaceMaterial_[1] = "ил"; 259 | SurfaceMaterial_[2] = "глина"; 260 | SurfaceMaterial_[3] = "силт"; 261 | SurfaceMaterial_[4] = "песок"; 262 | SurfaceMaterial_[5] = "камень"; 263 | SurfaceMaterial_[6] = "гравий"; 264 | SurfaceMaterial_[7] = "галька"; 265 | SurfaceMaterial_[8] = "булыжник"; 266 | SurfaceMaterial_[9] = "скала"; 267 | SurfaceMaterial_[11] = "лава"; 268 | SurfaceMaterial_[14] = "коралл"; 269 | SurfaceMaterial_[17] = "ракушки"; 270 | SurfaceMaterial_[18] = "валун"; 271 | SurfaceMaterial_[32000] = "нет значения"; 272 | 273 | } 274 | 275 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 276 | }; 277 | 278 | /** 279 | * @brief Класс-стратегия для добавления полей, содержащих подписи на английском и русском языках name_en и name_ru. 280 | * Подписи содержат информацию о значение глубины, на основе значения поля VALSOU - Значение глубины. 281 | */ 282 | class AddVALSOUSignatures: public AddSignatures 283 | { 284 | public: 285 | AddVALSOUSignatures(){} 286 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 287 | }; 288 | 289 | /** 290 | * @brief Класс-стратегия для добавления полей, содержащих подписи на английском и русском языках name_en и name_ru. 291 | * Подписи содержат информацию о значение вертикального просвета, на основе значения поля VERCLR - Вертикальный просвет. 292 | */ 293 | class AddVERCLRSignatures: public AddSignatures 294 | { 295 | public: 296 | AddVERCLRSignatures(){} 297 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 298 | }; 299 | 300 | /** 301 | * @brief Класс-стратегия для добавления полей depth_whole и depth_fractional, содержащих целую и дробную часть значения глубины соответственно. 302 | * Целая и дробная части значения глубины определяются по значению поля VALSOU - Значение глубины. 303 | */ 304 | class AddVALSOUasExtFields: public AddNewFieldStrategy 305 | { 306 | public: 307 | AddVALSOUasExtFields(){} 308 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 309 | virtual std::vector GetOGRFieldDefn(); 310 | }; 311 | 312 | /** 313 | * @brief Класс-стратегия для добавления полей depth_whole и depth_fractional, содержащих целую и дробную часть значения глубины соответственно. 314 | * Целая и дробная части значения глубины определяются по значению координаты Z. 315 | */ 316 | class AddSoundgValues: public AddNewFieldStrategy 317 | { 318 | public: 319 | AddSoundgValues(){} 320 | 321 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 322 | virtual std::vector GetOGRFieldDefn(); 323 | }; 324 | 325 | /** 326 | * @brief Класс-стратегия для добавления полей, содержащих подписи на английском и русском языках name_en и name_ru. 327 | * Подписи содержат информацию о значение магнитного склонения, на основе значения поля VALMAG - значение магнитного склонения. 328 | */ 329 | class AddVALMAGSignatures: public AddSignatures 330 | { 331 | public: 332 | AddVALMAGSignatures(){} 333 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 334 | }; 335 | 336 | /** 337 | * @brief Класс-стратегия для добавления полей, содержащих подписи на английском и русском языках name_en и name_ru. 338 | * Подписи содержат информацию о значение изобаты, на основе значения поля VALDCO - значение изобаты. 339 | */ 340 | class AddVALDCOSignatures: public AddSignatures 341 | { 342 | public: 343 | AddVALDCOSignatures(){} 344 | virtual void Execute(OGRFeature* dstFeature, OGRFeature* srcFeature); 345 | }; 346 | 347 | /** 348 | * @brief Абстрактный класс, представляющий интерфейс стратегии добавления нового слоя в БД. 349 | */ 350 | class CreateLayerStrategy 351 | { 352 | protected: 353 | const CPLString LayerName_; 354 | const OGRwkbGeometryType GeomType_; 355 | OGRLayer* Layer_; 356 | 357 | public: 358 | /** 359 | * @brief Конструктор. 360 | * @param layerName Имя нового слоя 361 | * @param geomType Тип геометрии 362 | */ 363 | CreateLayerStrategy(const CPLString& layerName, OGRwkbGeometryType geomType) 364 | : LayerName_(layerName), 365 | GeomType_(geomType) 366 | { 367 | } 368 | /** 369 | * @brief Создание нового слоя в БД. 370 | * @param poDstDatasource Источник данных, где будет создан новый слой 371 | */ 372 | void Create(OGRDataSource *poDstDatasource, OGRSpatialReference* spatRef); 373 | 374 | private: 375 | /** 376 | * @brief Абстрактный метод копирования/добавления/редактирования объектов в слое на основе данных из слоев-источников. 377 | */ 378 | virtual void DoProcess() = 0; 379 | /** 380 | * @brief Абстрактный метод получения пространственного индекса на основе слоев-источников. 381 | */ 382 | virtual OGRSpatialReference* GetSpatialRef() = 0; 383 | /** 384 | * @brief Абстрактный метод определения возможности создания нового слоя из слоев-источников. 385 | * @return Флаг возможности создания слоя 386 | */ 387 | virtual bool LayerCreationPossibility() = 0; 388 | }; 389 | 390 | struct LayerWithCopyRules 391 | { 392 | OGRLayer* SrcLayer_; 393 | std::vector AddNewFieldStrategies_; 394 | std::vector FieldsNamesForCopy_; 395 | }; 396 | typedef std::vector LayersWithCopyRules; 397 | 398 | /** 399 | * @brief Класс-стратегия добавления нового слоя в БД, основанный на принципе копирования геометрий всех объектов из слоев-источников. 400 | * @code 401 | const char *pszDstDriverName = "PostgreSQL"; 402 | poDstDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName( 403 | pszDstDriverName ); 404 | 405 | OGRDataSource *poDstDatasource = NULL; 406 | poDstDatasource = poDstDriver->Open(PG:"dbname='dbname' user='postgres' password='tochange'"); 407 | 408 | layerName = "anchor_parking_plg"; 409 | geomType = wkbPolygon; 410 | 411 | layerWithCopyRules.SrcLayer_ = poSrcDatasource->GetLayerByName("ACHARE"); 412 | layersWithCopyRules.push_back(layerWithCopyRules); 413 | 414 | NAVI2PG::CreateLayerStrategy* cfs = new NAVI2PG::CopyFeaturesStrategy(layerName, geomType, layersWithCopyRules, false); 415 | cfs->Create(poDstDatasource) 416 | * @endcode 417 | */ 418 | class CopyFeaturesStrategy : public CreateLayerStrategy 419 | { 420 | LayersWithCopyRules SrcLayers_; 421 | bool AddTypeFieldFlag_; 422 | public: 423 | /** 424 | * @brief Конструктор. 425 | * @param layerName Имя нового слоя 426 | * @param geomType Тип геометрии 427 | * @param srcLayersWithRules Слои-источники с набором стратегий копирования/добавления/редактирования объектов для нового слоя 428 | * @param addTypeField Флаг необходимости создания поля "type" 429 | */ 430 | CopyFeaturesStrategy(const CPLString& layerName, OGRwkbGeometryType geomType, LayersWithCopyRules srcLayersWithRules, bool addTypeField = true) 431 | : CreateLayerStrategy(layerName, geomType), 432 | AddTypeFieldFlag_(addTypeField), 433 | SrcLayers_(srcLayersWithRules) 434 | { 435 | } 436 | 437 | private: 438 | void DoProcess(); 439 | void ModifyLayerDefnForCopyFields(); 440 | void ModifyLayerDefnForAddNewFields(); 441 | 442 | OGRSpatialReference* GetSpatialRef(); 443 | bool LayerCreationPossibility(); 444 | }; 445 | 446 | /** 447 | * @brief Класс-стратегия добавления слоя, содержащего информацию о секторах огней. 448 | */ 449 | class CreateLightsSectorsStrategy : public CreateLayerStrategy 450 | { 451 | OGRLayer* LightsLayer_; 452 | public: 453 | /** 454 | * @brief Конструктор. 455 | * @param layerName Имя нового слоя 456 | * @param lightsLayer Слой содержащий информацию об огнях 457 | */ 458 | CreateLightsSectorsStrategy(const CPLString& layerName, OGRwkbGeometryType geomType, OGRLayer* lightsLayer) 459 | : CreateLayerStrategy(layerName, geomType), 460 | LightsLayer_(lightsLayer) 461 | { 462 | 463 | } 464 | 465 | private: 466 | void DoProcess(); 467 | void ModifyLayerDefnForAddNewFields(); 468 | 469 | OGRSpatialReference* GetSpatialRef(); 470 | bool LayerCreationPossibility(); 471 | }; 472 | 473 | 474 | /** 475 | * @brief Класс-стратегия добавления слоя, содержащего центр полигонов слоя TSSLPT. 476 | * Слой TSSLPT содержит части полосы сист.раздел.движ. 477 | */ 478 | class CreateTSSLPTStrategy : public CreateLayerStrategy 479 | { 480 | OGRLayer* TSSLPTLayer_; 481 | public: 482 | /** 483 | * @brief Конструктор. 484 | * @param layerName Имя нового слоя 485 | * @param srcLayer Слой TSSLPT 486 | */ 487 | CreateTSSLPTStrategy(const CPLString& layerName, OGRLayer* srcLayer) 488 | : CreateLayerStrategy(layerName, wkbPoint), 489 | TSSLPTLayer_(srcLayer) 490 | { 491 | 492 | } 493 | private: 494 | void DoProcess(); 495 | void ModifyLayerDefnForAddNewFields(); 496 | 497 | OGRSpatialReference* GetSpatialRef(); 498 | bool LayerCreationPossibility(); 499 | }; 500 | 501 | /** 502 | * @brief Класс-стратегия добавления слоя, содержащего подписи s57. 503 | * Данные формируются на основании слоев "IsolatedNode" и "$TEXTS" 504 | */ 505 | class CreateS57SignaturesStrategy : public CreateLayerStrategy 506 | { 507 | OGRLayer* IsolatedNodeLayer_; 508 | OGRLayer* TextsLayer_; 509 | public: 510 | /** 511 | * @brief Конструктор. 512 | * @param layerName Имя нового слоя 513 | * @param isolatedNodeLayer Слой "$IsolatedNode" 514 | * @param textsLayer Слой "$TEXTS" 515 | */ 516 | CreateS57SignaturesStrategy(const CPLString& layerName, OGRLayer* isolatedNodeLayer, OGRLayer* textsLayer) 517 | : CreateLayerStrategy(layerName, wkbPoint), 518 | IsolatedNodeLayer_(isolatedNodeLayer), 519 | TextsLayer_(textsLayer) 520 | { 521 | 522 | } 523 | 524 | private: 525 | void DoProcess(); 526 | void ModifyLayerDefnForAddNewFields(); 527 | 528 | OGRSpatialReference* GetSpatialRef(); 529 | bool LayerCreationPossibility(); 530 | }; 531 | 532 | /** 533 | * @brief Класс-стратегия добавления слоя, содержащего объекты "Выделение линейных" из классификатора ГИС Панорама. 534 | * Данные формируются на основании слоев "Edge" и "$LINES" 535 | */ 536 | class CreateSystemLinesStrategy : public CreateLayerStrategy 537 | { 538 | OGRLayer* EdgeLayer_; 539 | OGRLayer* LinesLayer_; 540 | OGRLayer* ConnectedNodeLayer_; 541 | public: 542 | /** 543 | * @brief Конструктор. 544 | * @param layerName Имя нового слоя 545 | * @param edgeLayer Слой "Edge" 546 | * @param linesLayer Слой "$LINES" 547 | * @param connectedNodeLayer Слой "ConnectedNode" 548 | */ 549 | CreateSystemLinesStrategy(const CPLString& layerName, OGRLayer* edgeLayer, OGRLayer* linesLayer, OGRLayer* connectedNodeLayer) 550 | : CreateLayerStrategy(layerName, wkbLineString), 551 | EdgeLayer_(edgeLayer), 552 | LinesLayer_(linesLayer), 553 | ConnectedNodeLayer_(connectedNodeLayer) 554 | { 555 | 556 | } 557 | 558 | private: 559 | std::vector getSubLinesRCIDs(const CPLString& lineDescription); 560 | void getSubLine(const int subLineRCID, OGRLineString* resultSubLine); 561 | void DoProcess(); 562 | void ModifyLayerDefnForAddNewFields(); 563 | OGRSpatialReference* GetSpatialRef(); 564 | bool LayerCreationPossibility(); 565 | }; 566 | 567 | /** 568 | * @brief Импортирование данных из файла формата s57 в БД PostgreSQL 569 | * 570 | * @param fromS57DataSource - полный путь до файла-источника данных s57 571 | * @param toPGConnectionString - строка подключения к БД PostgreSQL (http://www.gdal.org/ogr/drv_pg.html) 572 | */ 573 | void Import(const char* fromS57DataSource, const char* toPGConnectionString); 574 | 575 | /** 576 | * @brief Копирование файла-шаблона конфигурации MapServer с установкой новых значений некоторых переменных 577 | * 578 | * @param mapConfigTemplateFilename - полный путь до файла-шаблона конфигурации MapServer 579 | * @param mapConfigFilename - полный путь до нового файла конфигурации MapServer 580 | * @param newExtent - экстент, который должен быть установлен в файле конфигурации MapServer 581 | */ 582 | void CopyConfigFile( 583 | const char *mapConfigTemplateFilename, 584 | const char *mapConfigFilename, 585 | OGREnvelope newExtent, 586 | const char *pszPGConnectionString); 587 | } 588 | #endif // NAVI2PG_H 589 | -------------------------------------------------------------------------------- /templates/mapnik.py.template: -------------------------------------------------------------------------------- 1 | import mapnik 2 | 3 | m = mapnik.Map(10240,7680) 4 | m.background = mapnik.Color('steelblue') 5 | mapnik.load_map(m, '{S57_file_name}.xml') 6 | 7 | extent = mapnik.Box2d({S57_extent_X_Min}, {S57_extent_Y_Min}, {S57_extent_X_Max}, {S57_extent_Y_Max}) 8 | 9 | m.zoom_to_box(extent) 10 | 11 | mapnik.render_to_file(m,'{S57_file_name}.png', 'png') 12 | print "rendered image to '{S57_file_name}.png'" 13 | -------------------------------------------------------------------------------- /templates/mapnik.xml.template: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 26 | 27 | depths_area_plg 28 | 29 | {PG_DBNAME} 30 | wkb_geometry 31 | {PG_HOST} 32 | {PG_PASSWORD} 33 | "{PG_SCHEME}"."depths_area_plg" 34 | postgis 35 | {PG_USER} 36 | 37 | 38 | 39 | 50 | 51 | land_region_plg 52 | 53 | {PG_DBNAME} 54 | wkb_geometry 55 | {PG_HOST} 56 | {PG_PASSWORD} 57 | "{PG_SCHEME}"."land_region_plg" 58 | postgis 59 | {PG_USER} 60 | 61 | 62 | 63 | 105 | 106 | building_plg 107 | 108 | {PG_DBNAME} 109 | wkb_geometry 110 | {PG_HOST} 111 | {PG_PASSWORD} 112 | "{PG_SCHEME}"."building_plg" 113 | postgis 114 | {PG_USER} 115 | 116 | 117 | 118 | 124 | 125 | rivers 126 | 127 | {PG_DBNAME} 128 | wkb_geometry 129 | {PG_HOST} 130 | {PG_PASSWORD} 131 | "{PG_SCHEME}"."rivers" 132 | postgis 133 | {PG_USER} 134 | 135 | 136 | 137 | 143 | 144 | lakes 145 | 146 | {PG_DBNAME} 147 | wkb_geometry 148 | {PG_HOST} 149 | {PG_PASSWORD} 150 | "{PG_SCHEME}"."lakes" 151 | postgis 152 | {PG_USER} 153 | 154 | 155 | 156 | 172 | 173 | obstacles_plg 174 | 175 | {PG_DBNAME} 176 | wkb_geometry 177 | {PG_HOST} 178 | {PG_PASSWORD} 179 | "{PG_SCHEME}"."obstacles_plg" 180 | postgis 181 | {PG_USER} 182 | 183 | 184 | 185 | 186 | 225 | 226 | route_plg 227 | 228 | {PG_DBNAME} 229 | wkb_geometry 230 | {PG_HOST} 231 | {PG_PASSWORD} 232 | "{PG_SCHEME}"."route_plg" 233 | postgis 234 | {PG_USER} 235 | 236 | 237 | 238 | 239 | 246 | 247 | vegetation 248 | 249 | {PG_DBNAME} 250 | wkb_geometry 251 | {PG_HOST} 252 | {PG_PASSWORD} 253 | "{PG_SCHEME}"."vegetation" 254 | postgis 255 | {PG_USER} 256 | 257 | 258 | 259 | 260 | 267 | 268 | anchor_parking_plg 269 | 270 | {PG_DBNAME} 271 | wkb_geometry 272 | {PG_HOST} 273 | {PG_PASSWORD} 274 | "{PG_SCHEME}"."anchor_parking_plg" 275 | postgis 276 | {PG_USER} 277 | 278 | 279 | 280 | 328 | 329 | obstacles_pt 330 | 331 | {PG_DBNAME} 332 | wkb_geometry 333 | {PG_HOST} 334 | {PG_PASSWORD} 335 | "{PG_SCHEME}"."obstacles_pt" 336 | postgis 337 | {PG_USER} 338 | 339 | 340 | 341 | 358 | 359 | depths_area_ln 360 | 361 | {PG_DBNAME} 362 | wkb_geometry 363 | {PG_HOST} 364 | {PG_PASSWORD} 365 | "{PG_SCHEME}"."depths_area_ln" 366 | postgis 367 | {PG_USER} 368 | 369 | 370 | 371 | 372 | 377 | 378 | tsslpt_pt 379 | 380 | {PG_DBNAME} 381 | wkb_geometry 382 | {PG_HOST} 383 | {PG_PASSWORD} 384 | "{PG_SCHEME}"."tsslpt_pt" 385 | postgis 386 | {PG_USER} 387 | 388 | 389 | 390 | 391 | 396 | 397 | labels 398 | 399 | {PG_DBNAME} 400 | wkb_geometry 401 | {PG_HOST} 402 | {PG_PASSWORD} 403 | "{PG_SCHEME}"."labels" 404 | postgis 405 | {PG_USER} 406 | 407 | 408 | 409 | 410 | 678 | 679 | beacon 680 | 681 | {PG_DBNAME} 682 | wkb_geometry 683 | {PG_HOST} 684 | {PG_PASSWORD} 685 | "{PG_SCHEME}"."beacon" 686 | postgis 687 | {PG_USER} 688 | 689 | 690 | 691 | 692 | 709 | 710 | anchor_parking_pt 711 | 712 | {PG_DBNAME} 713 | wkb_geometry 714 | {PG_HOST} 715 | {PG_PASSWORD} 716 | "{PG_SCHEME}"."anchor_parking_pt" 717 | postgis 718 | {PG_USER} 719 | 720 | 721 | 722 | 780 | 781 | lights_sectors 782 | 783 | {PG_DBNAME} 784 | wkb_geometry 785 | {PG_HOST} 786 | {PG_PASSWORD} 787 | "{PG_SCHEME}"."lights_sectors" 788 | postgis 789 | {PG_USER} 790 | 791 | 792 | 793 | 794 | 806 | 807 | building_pt 808 | 809 | {PG_DBNAME} 810 | wkb_geometry 811 | {PG_HOST} 812 | {PG_PASSWORD} 813 | "{PG_SCHEME}"."building_pt" 814 | postgis 815 | {PG_USER} 816 | 817 | 818 | 819 | 820 | 826 | 827 | vegetation_pt 828 | 829 | {PG_DBNAME} 830 | wkb_geometry 831 | {PG_HOST} 832 | {PG_PASSWORD} 833 | "{PG_SCHEME}"."vegetation_pt" 834 | postgis 835 | {PG_USER} 836 | 837 | 838 | 839 | 840 | 853 | 854 | land_region_pt 855 | 856 | {PG_DBNAME} 857 | wkb_geometry 858 | {PG_HOST} 859 | {PG_PASSWORD} 860 | "{PG_SCHEME}"."land_region_pt" 861 | postgis 862 | {PG_USER} 863 | 864 | 865 | 866 | 867 | 936 | 937 | mark 938 | 939 | {PG_DBNAME} 940 | wkb_geometry 941 | {PG_HOST} 942 | {PG_PASSWORD} 943 | "{PG_SCHEME}"."mark" 944 | postgis 945 | {PG_USER} 946 | 947 | 948 | 949 | 950 | 977 | 978 | route_pt 979 | 980 | {PG_DBNAME} 981 | wkb_geometry 982 | {PG_HOST} 983 | {PG_PASSWORD} 984 | "{PG_SCHEME}"."route_pt" 985 | postgis 986 | {PG_USER} 987 | 988 | 989 | 990 | 991 | 998 | 999 | magnetic_declination 1000 | 1001 | {PG_DBNAME} 1002 | wkb_geometry 1003 | {PG_HOST} 1004 | {PG_PASSWORD} 1005 | "{PG_SCHEME}"."magnetic_declination" 1006 | postgis 1007 | {PG_USER} 1008 | 1009 | 1010 | 1011 | 1012 | 1030 | 1031 | building_ln 1032 | 1033 | {PG_DBNAME} 1034 | wkb_geometry 1035 | {PG_HOST} 1036 | {PG_PASSWORD} 1037 | "{PG_SCHEME}"."building_ln" 1038 | postgis 1039 | {PG_USER} 1040 | 1041 | 1042 | 1043 | 1044 | 1054 | 1055 | coastline 1056 | 1057 | {PG_DBNAME} 1058 | wkb_geometry 1059 | {PG_HOST} 1060 | {PG_PASSWORD} 1061 | "{PG_SCHEME}"."coastline" 1062 | postgis 1063 | {PG_USER} 1064 | 1065 | 1066 | 1067 | 1068 | 1073 | 1074 | called_sea_parts 1075 | 1076 | {PG_DBNAME} 1077 | wkb_geometry 1078 | {PG_HOST} 1079 | {PG_PASSWORD} 1080 | "{PG_SCHEME}"."called_sea_parts" 1081 | postgis 1082 | {PG_USER} 1083 | 1084 | 1085 | 1086 | 1087 | 1092 | 1093 | land_region_ln 1094 | 1095 | {PG_DBNAME} 1096 | wkb_geometry 1097 | {PG_HOST} 1098 | {PG_PASSWORD} 1099 | "{PG_SCHEME}"."land_region_ln" 1100 | postgis 1101 | {PG_USER} 1102 | 1103 | 1104 | 1105 | 1106 | 1132 | 1133 | obstacles_ln 1134 | 1135 | {PG_DBNAME} 1136 | wkb_geometry 1137 | {PG_HOST} 1138 | {PG_PASSWORD} 1139 | "{PG_SCHEME}"."obstacles_ln" 1140 | postgis 1141 | {PG_USER} 1142 | 1143 | 1144 | 1145 | 1146 | 1188 | 1189 | route_ln 1190 | 1191 | {PG_DBNAME} 1192 | wkb_geometry 1193 | {PG_HOST} 1194 | {PG_PASSWORD} 1195 | "{PG_SCHEME}"."route_ln" 1196 | postgis 1197 | {PG_USER} 1198 | 1199 | 1200 | 1201 | 1206 | 1207 | system_lines 1208 | 1209 | {PG_DBNAME} 1210 | wkb_geometry 1211 | {PG_HOST} 1212 | {PG_PASSWORD} 1213 | "{PG_SCHEME}"."system_lines" 1214 | postgis 1215 | {PG_USER} 1216 | 1217 | 1218 | 1219 | -------------------------------------------------------------------------------- /templates/symbols/symbols.sym: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextgis/navi2pg/a12403a5ad00aed02673034e2c9e2dea0b9b68f9/templates/symbols/symbols.sym --------------------------------------------------------------------------------