From e8890a31f945acef02c617264aa041a6ace03366 Mon Sep 17 00:00:00 2001 From: Victor Wagner Date: Sat, 25 Feb 2006 14:08:38 +0000 Subject: [PATCH] Added fGIS --- geography/fGIS/EPU.html | 125 ++++ geography/fGIS/TODO.txt | 82 +++ geography/fGIS/concept.html | 313 +++++++++ geography/fGIS/concepts.html | 398 +++++++++++ geography/fGIS/drawing-modes.gif | Bin 0 -> 2800 bytes geography/fGIS/index.html | 131 ++++ geography/fGIS/install.html | 66 ++ geography/fGIS/levels.gif | Bin 0 -> 2540 bytes geography/fGIS/lib_doc.pdf | Bin 0 -> 274728 bytes geography/fGIS/man/border.1.html | 72 ++ geography/fGIS/man/clip.1.html | 76 +++ geography/fGIS/man/cluster.1.html | 90 +++ geography/fGIS/man/eheader.1.html | 209 ++++++ geography/fGIS/man/extents.1.html | 104 +++ .../fGIS/man/fgisRasterColorImage.n.html | 144 ++++ geography/fGIS/man/legend.n.html | 134 ++++ geography/fGIS/man/mosaic.1.html | 94 +++ geography/fGIS/man/neighbours.1.html | 75 +++ geography/fGIS/man/outtable.1.html | 192 ++++++ geography/fGIS/man/palette.n.html | 110 ++++ geography/fGIS/man/planchet.n.html | 617 ++++++++++++++++++ geography/fGIS/man/projection.n.html | 147 +++++ geography/fGIS/man/raster.n.html | 417 ++++++++++++ geography/fGIS/man/reclass1.1.html | 103 +++ geography/fGIS/man/window.1.html | 74 +++ geography/fGIS/tclext.html | 185 ++++++ geography/fGIS/topology.html | 128 ++++ geography/index.html | 1 + 28 files changed, 4087 insertions(+) create mode 100644 geography/fGIS/EPU.html create mode 100644 geography/fGIS/TODO.txt create mode 100644 geography/fGIS/concept.html create mode 100644 geography/fGIS/concepts.html create mode 100644 geography/fGIS/drawing-modes.gif create mode 100644 geography/fGIS/index.html create mode 100644 geography/fGIS/install.html create mode 100644 geography/fGIS/levels.gif create mode 100755 geography/fGIS/lib_doc.pdf create mode 100644 geography/fGIS/man/border.1.html create mode 100644 geography/fGIS/man/clip.1.html create mode 100644 geography/fGIS/man/cluster.1.html create mode 100644 geography/fGIS/man/eheader.1.html create mode 100644 geography/fGIS/man/extents.1.html create mode 100644 geography/fGIS/man/fgisRasterColorImage.n.html create mode 100644 geography/fGIS/man/legend.n.html create mode 100644 geography/fGIS/man/mosaic.1.html create mode 100644 geography/fGIS/man/neighbours.1.html create mode 100644 geography/fGIS/man/outtable.1.html create mode 100644 geography/fGIS/man/palette.n.html create mode 100644 geography/fGIS/man/planchet.n.html create mode 100644 geography/fGIS/man/projection.n.html create mode 100644 geography/fGIS/man/raster.n.html create mode 100644 geography/fGIS/man/reclass1.1.html create mode 100644 geography/fGIS/man/window.1.html create mode 100644 geography/fGIS/tclext.html create mode 100644 geography/fGIS/topology.html diff --git a/geography/fGIS/EPU.html b/geography/fGIS/EPU.html new file mode 100644 index 0000000..596966b --- /dev/null +++ b/geography/fGIS/EPU.html @@ -0,0 +1,125 @@ + + +Environmental Planning Utilities + + +[f(GIS) home] +
+

Environmental Planning Utilities

+ +

Overview

+Environmental planning utilities is set of stand-alone programs, which +performs GIS operations on EPPL7 data files. EPPL stands for "Environmental Planning Program Language". When I begin to reimplement some EPPL commands trying to overcome some +limitations of 16-bit DOS environment, I found that it is complete waste of effort - attempt to implement yet another scripting language while we have such +a wonderful things as Unix shell or Tcl. +

+So, it is not a language, but set of utilities. They are designed to operate +non-interactively, from batch files or scripts. Interactive front end is +provided by f(GIS). +

+

Utilities

+ +EPU include: + +

System requirements

+ +EPU should work on any system which is 32-bit and has ANSI C compilier. +They have been tested under Linux, Solaris/Sparc and +MS-DOS with DOS4GW extender (Watcom C 10.0). It is essential +that system should support concept of standard input/output and exit codes, +so porting to Win32 should be trivial, but porting to MacOS would require +major redesign. + +
+[f(GIS) home] + + diff --git a/geography/fGIS/TODO.txt b/geography/fGIS/TODO.txt new file mode 100644 index 0000000..0c9dbc0 --- /dev/null +++ b/geography/fGIS/TODO.txt @@ -0,0 +1,82 @@ +Near future + +Fgis tcl extension: + +1. Compile tcl extension for NT/Win 95 + +2. Finish pattern handling (patterns set index xbm-data) + +3. Write drawing of patterned raster + +4. Write projection object + +5. Finish editing primitives + +6. Separate tk-dependent part from non-GUI part of C code. + +Tcl scripts + +1. Invent interface to call EPU from within TCL + +2. Complete chart (choropleth) type of layer + +3. Write tag (point) type of layer + +4. Invent standartized interface to SQL databases (Postgres, Oracle, + ODBC for start) + +5. Write ``object'' layer - collection of arbitrary Tk canvas items, + which are treated as layer and can be saved and loaded + +6. Add grid visualisation code to planchet + +7. Write postgres Tcl-dbi module. Polish TclDBI for Oracle, ODBC and + postgres and include them into distribution + +8. Finish layer properties dialog in mapview + +EPU + +1. Debug outtable + +2. Write projection conversion tool + +3. Write evaluate AKA mapcalc + +4. Do something with border and debug rasterize + +5. Write ppmtoepp and epptoppm converters + +6. Design and write RADIUS + +7. Design and write INTERPOLATE + +8. Design and write mapclass + +Distribution: + +1. Polish top-level Makefile + +2. Provide example dataset + +3. Write installation program for Win32 binary distr. + +4. Separate third-party extensions like Hobbs' megawidgets from + home-grown scripts + +5. Put binary distribution of Tcl with neccessary extensions + on ftp + +Documentation + +1. Fill holes in docs for already written commands + +3. Translte epp_lib docs to English + +4. Complete (and translate to english) EPU manual + +IDEAS TO CONSIDER + +fGIS user environment should be able to store layers in RCS + +Invent and document, and eventually implement, vector format diff --git a/geography/fGIS/concept.html b/geography/fGIS/concept.html new file mode 100644 index 0000000..ddddc78 --- /dev/null +++ b/geography/fGIS/concept.html @@ -0,0 +1,313 @@ + + +fGIS Concept + + +

ëÏÎÃÅÐÃÉÑ ÆÕÎËÃÉÏÎÁÌØÎÏÊ GIS

+ +
+ üÔÏÔ ÄÏËÕÍÅÎÔ ÕÓÔÁÒÅÌ! + ôÅËÕÝÅÅ ÏÐÉÓÁÎÉÅ ËÏÎÃÅÐÃÉÉ ÉÍÅÅÔÓÑ ÔÏÌØËÏ × × +ÁÎÇÌÉÊÓËÏÊ ×ÅÒÓÉÉ, ËÁËÏ×ÏÅ ÐÏÌÏÖÅÎÉÅ É ÓÏÈÒÁÎÉÔÓÑ ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ +ËÔÏ-ÎÉÂÕÄØ ÉÚ ÒÕÓÓËÏÑÚÙÞÎÙÈ ÞÌÅÎÏ× ËÏÍÁÎÄÙ ÎÅ ×ÏÚØÍÅÔÓÑ ÐÏÄÄÅÒÖÉ×ÁÔØ +ÒÕÓÓËÕÀ ×ÅÒÓÉÀ ÄÏËÕÍÅÎÔÁÃÉÉ. õ ÍÅÎÑ ÐÒÏÓÔÏ ÎÅÔ ÓÉÌ ÎÁ Ä×Å ×ÅÒÓÉÉ +ÄÏËÕÍÅÎÔÁÃÉÉ +ÏÄÎÏ×ÒÅÍÅÎÎÏ, ÐÏÜÔÏÍÕ Ñ ÐÏÄÄÅÒÖÉ×ÁÀ ÔÏÌØËÏ ÁÎÇÌÉÊÓËÉÊ ×ÁÒÉÁÎÔ, ËÁË +ÄÏÓÔÕÐÎÙÊ ÂÏÌØÛÅÍÕ ÞÉÓÌÕ ÐÏÔÅÎÃÉÁÌØÎÙÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ. +
+
    +
  1. ïÐÒÅÄÅÌÅÎÉÅ +
  2. ôÏÞÎÏÓÔØ ËÁÒÔÙ. +
  3. çÄÅ ÖÅ ËÏÎÔÕÒ? +
  4. ïÐÅÒÁÃÉÉ Ó ËÁÒÔÁÍÉ. +
  5. ÷ÉÚÕÁÌÉÚÁÃÉÑ ËÁÒÔ É ÍÅÔÁÄÁÎÎÙÅ. +
  6. íÁÓÛÔÁÂÎÙÊ ÒÑÄ ÉÌÉ ÉÅÒÁÒÈÉÑ ÒÅÇÉÏÎÏ× +
  7. ðÒÉÎÃÉÐÙ ÐÏÓÔÒÏÅÎÉÑ ÓÉÓÔÅÍÙ +
  8. á×ÔÏÍÁÔÉÞÅÓËÁÑ ÁËÔÕÁÌÉÚÁÃÉÑ ËÁÒÔ. +
+ + + +÷ ÄÁÎÎÏÍ ÔÅËÓÔÅ ÐÒÅÄÌÁÇÁÅÔÓÑ ÎÏ×ÙÊ ÐÏÄÈÏÄ Ë ÐÒÅÄÓÔÁ×ÌÅÎÉÀ +ÐÒÏÓÔÒÁÎÓÔ×ÅÎÎÏÊ ÉÎÆÏÒÍÁÃÉÉ. ïÎ ÎÅ ÓÏ×ÓÅÍ ÎÏ×ÙÊ. íÎÏÇÉÅ ÓÕÝÅÓÔ×ÕÀÝÉÅ +çéó, ÏÓÏÂÅÎÎÏ ÏÒÉÅÎÔÉÒÏ×ÁÎÎÙÅ ÎÁ ÏÂÒÁÂÏÔËÕ ÓÎÉÍËÏ×, ÎÅÑ×ÎÏ ÉÓÐÏÌØÚÕÀÔ +ÅÇÏ. îÏ ÎÉËÔÏ ÅÝÅ ÎÅ ÐÙÔÁÌÓÑ × Ñ×ÎÏÍ ×ÉÄÅ ÓÆÏÒÍÕÌÉÒÏ×ÁÔØ ÅÇÏ É ÐÏËÁÚÁÔØ +ÅÇÏ ÄÏÓÔÁÔÏÞÎÏÓÔØ ÄÌÑ ÂÏÌØÛÉÎÓÔ×Á çéó-ÚÁÄÁÞ. +

+

ïÐÒÅÄÅÌÅÎÉÅ

+ îÁÚÏ×ÅÍ ËÁÒÔÏÊ ÆÕÎËÃÉÀ ÏÔ ËÏÏÒÄÉÎÁÔ, ÏÐÒÅÄÅÌÅÎÎÕÀ ÎÁ ÎÅËÏÔÏÒÏÍ + ÐÏÄÍÎÏÖÅÓÔ×Å ÐÏ×ÅÒÈÎÏÓÔÉ ÚÅÍÎÏÇÏ ÛÁÒÁ É ÐÒÉÎÉÍÁÀÝÕÀ ÌÉÂÏ ÞÉÓÌÏ×ÙÅ + (×ÅÝÅÓÔ×ÅÎÎÙÅ) ÚÎÁÞÅÎÉÑ, ÌÉÂÏ ÚÎÁÞÅÎÉÑ ÉÚ ËÁËÏÇÏ-ÔÏ ËÏÎÅÞÎÏÇÏ ÍÎÏÖÅÓÔ×Á. +

+ ðÏÞÅÍÕ ÜÔÏÇÏ ÄÏÓÔÁÔÏÞÎÏ? +

    +
  1. ïÂÌÁÓÔØ ÏÐÒÅÄÅÌÅÎÉÑ ÍÏÖÅÔ ÂÙÔØ ÌÉÂÏ ÎÅÐÒÅÒÙ×ÎÙÍ ÕÞÁÓÔËÏÍ ÔÅÒÒÉÔÏÒÉÉ, + ÅÓÌÉ ÎÁÓ ÉÎÔÅÒÅÓÕÅÔ ÆÅÎÏÍÅÎ, ÉÍÅÀÝÉÊ ÐÌÏÝÁÄÎÕÀ ÐÒÉÒÏÄÕ, + ÌÉÂÏ ÍÎÏÖÅÓÔ×ÏÍ ÌÉÎÉÊ (ÄÏÒÏÖÎÁÑ ÓÅÔØ, ÒÅÞÎÁÑ ÓÅÔØ), ÌÉÂÏ ËÏÎÅÞÎÙÍ +ÍÎÏÖÅÓÔ×ÏÍ ÉÚÏÌÉÒÏ×ÁÎÎÙÈ ÔÏÞÅË (ÎÁÓÅÌÅÎÎÙÅ ÐÕÎËÔÙ, ÔÏÞËÉ ÏÐÒÏÂÏ×ÁÎÉÑ). +

    + ïÞÅ×ÉÄÎÏ, ÞÔÏ ×ÓÅ ÓÕÝÅÓÔ×ÕÀÝÉÅ ÓÐÏÓÏÂÙ ËÁÒÔÏÇÒÁÆÉÞÅÓËÏÇÏ ÉÚÏÂÒÁÖÅÎÉÑ + ÐÏÚ×ÏÌÑÀÔ ÉÚÏÂÒÁÚÉÔØ ÏÂßÅËÔÙ, ÏÔÎÏÓÑÝÉÅÓÑ Ë ÏÄÎÏÊ ÉÚ ÔÒÅÈ ÜÔÉÈ ÇÒÕÐÐ. + +

  2. ìÀÂÏÊ ÐÁÒÁÍÅÔÒ, ËÏÔÏÒÙÊ ÍÙ ÍÏÖÅÍ ÉÚÏÂÒÁÚÉÔØ ÎÁ ËÁÒÔÅ, ÌÉÂÏ + ËÏÌÉÞÅÓÔ×ÅÎÎÙÊ, ÌÉÂÏ ËÁËÉÍ-ÔÏ ÏÂÒÁÚÏÍ ËÌÁÓÓÉÆÉÃÉÒÏ×ÁÎ. åÓÌÉ ÍÙ ÒÁÓÓÍÏÔÒÉÍ + ËÌÁÓÓÉÆÉËÁÃÉÀ ËÁË ËÏÎÅÞÎÏÅ ÍÎÏÖÅÓÔ×Ï ËÌÁÓÓÏ×, ÔÏ ÓÔÁÎÅÔ ÏÞÅ×ÉÄÎÏ, ÞÔÏ + ×ÓÅ ËÁÒÔÙ ËÁÞÅÓÔ×ÅÎÎÙÈ ÐÒÉÚÎÁËÏ× (ÐÏÞ×ÅÎÎÙÅ, ÒÁÓÔÉÔÅÌØÎÙÅ É ÄÁÖÅ ÁÄÍÉÎÉÓÔÒÁ- + ÔÉ×ÎÏÅ ÒÁÊÏÎÉÒÏ×ÁÎÉÅ) ÐÏÐÁÄÁÀÔ ÐÏÄ ÎÁÛÅ ÏÐÒÅÄÅÌÅÎÉÅ. +
+åÄÉÎÓÔ×ÅÎÎÏÅ × ÎÁÛÅÍ ÏÐÒÅÄÅÌÅÎÉÉ, ÞÔÏ ÍÏÖÅÔ ×ÏÚÍÕÔÉÔØ ÞÅÌÏ×ÅËÁ, ÐÒÉ×ÙËÛÅÇÏ +ÒÁÂÏÔÁÔØ Ó ÂÕÍÁÖÎÙÍÉ ËÁÒÔÁÍÉ, ÜÔÏ ÔÏ, ÞÔÏ ÍÙ ÐÏÚ×ÏÌÑÅÍ ËÁÒÔÅ ÉÚÏÂÒÁÖÁÔØ ÔÏÌØËÏ +ÏÄÉÎ ÐÏËÁÚÁÔÅÌØ, × ÔÏ ×ÒÅÍÑ ËÁË ÎÁ ÂÕÍÁÖÎÙÈ ËÁÒÔÁÈ ÏÂÙÞÎÏ ÏÄÎÏ×ÒÅÍÅÎÎÏ +ÉÚÏÂÒÁÖÁÅÔÓÑ ÎÅÓËÏÌØËÏ ÔÅÍÁÔÉÞÅÓËÉ ÓÈÏÄÎÙÈ ÐÏËÁÚÁÔÅÌÅÊ, ÎÅ ÓÞÉÔÁÑ +ÏÂÝÅÇÅÏÇÒÁÆÉÞÅÓËÏÊ ÓÉÔÕÁÃÉÉ. +

+íÙ ÎÁÍÅÒÅÎÎÏ ÉÄÅÍ ÎÁ ÜÔÏ ÏÇÒÁÎÉÞÅÎÉÅ, ÐÏÓËÏÌØËÕ ÏÎÏ ÏÂÌÅÇÞÁÅÔ ÄÁÌØÎÅÊÛÕÀ +ÒÁÂÏÔÕ Ó ËÁÒÔÁÍÉ. òÁÚÄÅÌÉ× ËÁÖÄÕÀ ÉÓÈÏÄÎÕÀ ËÁÒÔÕ ÎÁ ÎÅÓËÏÌØËÏ ÓÌÏÅ×, +ËÁÖÄÙÊ ÉÚ ËÏÔÏÒÙÈ ÏÔ×ÅÞÁÅÔ ÔÏÌØËÏ ÚÁ ÏÄÉÎ ÐÏËÁÚÁÔÅÌØ, ÍÙ ÐÏÌÕÞÁÅÍ ÐÏÌÎÕÀ +Ó×ÏÂÏÄÕ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÐÒÏÉÚ×ÏÄÎÙÈ ËÁÒÔ. íÙ ÍÏÖÅÍ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÒÉ +ÁÎÁÌÉÚÅ ÌÀÂÙÅ ÐÏËÁÚÁÔÅÌÉ, ÎÅ ÏÂÒÁÝÁÑ ×ÎÉÍÁÎÉÅ ÎÁ ÔÏ, ËÁËÉÍ ÐÕÔÅÍ +ÜÔÁ ÉÎÆÏÒÍÁÃÉÑ ÐÏÌÕÞÅÎÁ. ÷ÓÅ ËÁÒÔÙ Õ ÎÁÓ ÎÅÚÁ×ÉÓÉÍÙ É ÒÁ×ÎÏÐÒÁ×ÎÙ. + +

ôÏÞÎÏÓÔØ ËÁÒÔÙ.

+ +ìÀÂÁÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÒÅÁÌØÎÏ ÓÕÝÅÓÔ×ÕÀÝÉÈ ÏÂßÅËÔÁÈ ÉÍÅÅÔ ÏÇÒÁÎÉÞÅÎÎÕÀ ÔÏÞÎÏÓÔØ. +ðÏÜÔÏÍÕ ÎÕÖÎÏ ××ÅÓÔÉ ÓÐÏÓÏ ÏÃÅÎËÉ ÔÏÞÎÏÓÔÉ ËÁÒÔ. +õ ÐÒÏÂÌÅÍÙ ÔÏÞÎÏÓÔÉ ËÁÒÔÙ ÅÓÔØ Ä×Å ÓÔÏÒÏÎÙ: +
    +
  1. ôÏÞÎÏÓÔØ ÏÐÒÅÄÅÌÅÎÉÑ ËÏÏÒÄÉÎÁÔ +
  2. ôÏÞÎÏÓÔØ ÉÎÆÏÒÍÁÃÉÉ Ï ÚÎÁÞÅÎÉÉ ËÁÒÔÙ. +
+ôÏÞÎÏÓÔØ ÏÐÒÅÄÅÌÅÎÉÑ ËÏÏÒÄÉÎÁÔ ÜË×É×ÁÌÅÎÔÎÁ ÔÏÞÎÏÓÔÉ ÐÒÏ×ÅÄÅÎÉÑ +ËÏÎÔÕÒÏ× ÉÓÈÏÄÎÏÊ ËÁÒÔÙ É ÏÂÙÞÎÏ ÎÅ ÐÒÅ×ÙÛÁÅÔ 1-2 ÍÍ × ÍÁÓÛÔÁÂÅ ÉÓÈÏÄÎÏÊ +ËÁÒÔÙ. ïÐÒÅÄÅÌÅÎÎÙÅ ÐÏÇÒÅÛÎÏÓÔÉ ×ÎÏÓÉÔ É ××ÏÄ ËÁÒÔ × ÍÁÛÉÎÕ, ÎÏ ÏÎÉ +ÏÂÙÞÎÏ ÎÁ ÐÏÒÑÄÏË ÍÅÎØÛÅ. +

+÷ ËÁÞÅÓÔ×Å ÏÃÅÎËÉ ËÏÏÒÄÉÎÁÔÎÏÊ ÔÏÞÎÏÓÔÉ ËÁÒÔÙ ÍÙ ÂÕÄÅÍ ÉÓÐÏÌØÚÏ×ÁÔØ +ÐÒÏÓÔÒÁÎÓÔ×ÅÎÎÏÅ ÒÁÚÒÅÛÅÎÉÅ. üÔÏ ÍÉÎÉÍÁÌØÎÏÅ ÒÁÓÓÔÏÑÎÉÅ ÍÅÖÄÕ ÔÏÞËÁÍÉ +× ËÏÔÏÒÙÈ ËÁÒÔÁ ÍÏÖÅÔ ÉÍÅÔØ ÒÁÚÌÉÞÎÙÅ ÚÎÁÞÅÎÉÅ. ôÅ ËÏÍÕ ÐÒÉÈÏÄÉÌÏÓØ +ÒÁÂÏÔÁÔØ Ó ÏÔÓËÁÎÉÒÏ×ÁÎÎÙÍÉ ÉÚÏÂÒÁÖÅÎÉÑÍÉ ÓÒÁÚÕ ÚÁÍÅÔÑÔ ÓÈÏÄÓÔ×Ï +ÜÔÏÇÏ ÐÏÎÑÔÉÑ Ó ÒÁÚÒÅÛÅÎÉÅÍ ÒÁÓÔÒÏ×ÏÇÏ ÉÚÏÂÒÁÖÅÎÉÑ. üÔÏ ÄÅÊÔÓ×ÉÔÅÌØÎÏ +ÏÄÎÏ É ÔÏ ÖÅ ÐÏÎÑÔÉÅ, ÐÏÓËÏÌØËÕ ÄÌÑ ÈÒÁÎÅÎÉÑ ËÁÒÔ ÉÓÐÏÌØÚÕÅÔÓÑ ÒÁÓÔÒÏ×ÙÊ +ÆÏÒÍÁÔ. +

+þÔÏ ËÁÓÁÅÔÓÑ ÔÏÞÎÏÓÔÉ ÚÎÁÞÎÅÎÉÊ, ÔÏ ÔÕÔ ×ÏÐÒÏÓ ÂÏÌÅÅ ÓÌÏÖÎÙÊ. +äÁÔØ ÆÏÒÍÁÌÉÚÏ×ÁÎÎÕÀ ÏÃÅÎËÕ ÔÏÞÎÏÓÔÉ ËÌÁÓÓÉÆÉËÁÃÉÉ ÎÅÌØÚÑ, ÅÓÌÉ ÔÏÌØËÏ +ÜÔÁ ËÌÁÓÓÉÆÉËÁÃÉÑ ÎÅ ÐÏÌÕÞÅÎÁ × ÒÅÚÕÌØÔÁÔÅ ËÁËÏÇÏ-ÌÉÂÏ ÓÔÁÔÉÓÔÉÞÅÓËÏÇÏ +ÍÅÔÏÄÁ. +

+ôÅÏÒÉÑ ÔÏÞÎÏÓÔÉ ÉÚÍÅÒÅÎÉÊ ËÏÌÉÞÅÓÔ×ÅÎÎÙÈ ÐÏËÁÚÁÔÅÌÅÊ É ÔÏÞÎÏÓÔÉ +ÉÎÔÅÒÐÏÌÑÃÉÉ, ÎÁÐÒÏÔÉ×, ÈÏÒÏÛÏ ÒÁÚÒÁÂÏÔÁÎÁ. +

+ëÒÏÍÅ ÔÏÇÏ ÓÕÝÅÓÔ×ÕÅÔ ÔÏÞÎÏÓÔØ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ ÞÉÓÅÌ × ËÏÍÐØÀÔÅÒÅ. +

+ðÏÜÔÏÍÕ ÄÌÑ ËÁÒÔ ËÏÌÉÞÅÓÔ×ÅÎÎÙÈ ÐÁÒÁÍÅÔÒÏ× ËÒÏÍÅ ÒÁÚÒÅÛÅÎÉÑ ÉÓÐÏÌØÚÕÅÔÓÑ +ÐÏÎÑÔÉÅ Z-ÔÏÞÎÏÓÔÉ - ÍÉÎÉÍÁÌØÎÁÑ ÒÁÚÎÉÃÁ ÍÅÖÄÕ ÚÎÁÞÅÎÉÑÍÉ ËÁÒÔÙ, +ÐÒÉ ËÏÔÏÒÙÈ ÜÔÉ ÚÎÁÞÅÎÉÑ ÓÞÉÔÁÀÔÓÑ ÎÅÒÁ×ÎÙÍÉ. Z-ÔÏÞÎÏÓÔØ ÜÔÏ + +

çÄÅ ÖÅ ËÏÎÔÕÒ?

+ +÷Ï ×ÓÅÍ ×ÙÛÅÉÚÌÏÖÅÎÎÏÍ ÞÅÌÏ×ÅË ÐÒÉ×ÙËÛÉÊ ÒÁÂÏÔÁÔØ Ó ËÁÒÔÁÍÉ ÎÅ ÎÁÊÄÅÔ +ÏÄÎÏÇÏ ×ÁÖÎÏÇÏ ÐÏÎÑÔÉÑ - ËÏÎÔÕÒÁ. åÇÏ ÚÄÅÓØ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÎÅÔ. +

+ëÏÎÔÕÒ ÜÔÏ Ó×ÑÚÎÏÅ ÍÎÏÖÅÓÔ×Ï ÔÏÞÅË, × ËÏÔÏÒÙÈ ËÁÒÔÁ ÉÍÅÅÔ ÏÄÉÎÁËÏ×ÏÅ ÚÎÁÞÅÎÉÅ. +åÓÌÉ ÍÙ ÒÁÓÓÍÏÔÒÉÍ ËÁÒÔÕ ËÏÌÉÞÅÓÔ×ÅÎÎÏÇÏ ÐÏËÁÚÁÔÅÌÑ, ËÏÔÏÒÁÑ ÏÂÙÞÎÏ +ÉÚÏÂÒÁÖÁÅÔÓÑ Ó ÐÏÍÏÝØÀ ÐÏÓÌÏÊÎÏÊ ÒÁÓËÒÁÓËÉ, ÔÏ ÍÙ Õ×ÉÄÉÍ, ÞÔÏ +ËÏÎÔÕÒ ÚÄÅÓØ - ÏÂÌÁÓÔØ × ËÏÔÏÒÏÊ ÚÎÁÞÅÎÉÑ ÐÏËÁÚÁÔÅÌÑ ÚÁËÌÀÞÅÎÙ × ÏÐÒÅÄÅÌÅÎÎÏÍ +ÉÎÔÅÒ×ÁÌÅ - ÏÔ ÏÄÎÏÊ ÉÚÏÌÉÎÉÉ ÄÏ ÓÏÓÅÄÎÅÊ. åÓÌÉ ÍÙ ÉÚÍÅÎÉÍ ÇÒÁÎÉÃÙ +ÉÎÔÅÒ×ÁÌÏ×, ÉÚÍÅÎÉÔÓÑ É ×ÓÑ ËÏÎÔÕÒÎÁÑ ÓÅÔØ, ÈÏÔÑ ÓÁÍÁ ËÁÒÔÁ, ÔÏ ÅÓÔØ +ÐÒÏÓÔÒÁÎÓÔ×ÅÎÎÏÅ ÒÁÓÐÒÅÄÅÌÅÎÉÅ ÚÎÁÞÅÎÉÊ ÐÏËÁÚÁÔÅÌÑ, ÏÓÔÁÌÁÓØ ÐÒÅÖÎÅÊ. +

+äÌÑ ËÁÒÔ ËÌÁÓÓÉÆÉËÁÃÉÊ ËÏÎÔÕÒ --- ×ÅÝØ ÂÏÌÅÅ ÕÓÔÏÊÞÉ×ÁÑ. ïÎ ÍÏÖÅÔ +ÉÚÍÅÎÉÔØÓÑ ÅÓÌÉ ÐÏ ËÁËÉÍ-ÔÏ ÐÒÉÞÉÎÁÍ ÉÚÍÅÎÉÔÓÑ ËÌÁÓÓÉÆÉËÁÃÉÑ ÌÉÂÏ +ÎÁÛÉ ÚÎÁÎÉÑ Ï ÔÅÒÒÉÔÏÒÉÉ. +

+ðÏÜÔÏÍÕ ÄÌÑ ÜÔÉÈ ËÁÒÔ ×ÏÚÍÏÖÎÁ ÒÁÂÏÔÁ ÎÁ ÕÒÏ×ÎÅ ËÏÎÔÕÒÏ×. ÷ ÏÓÎÏ×ÎÏÍ +ÏÐÅÒÁÃÉÉ Ó ËÏÎÔÕÒÁÍÉ ÜÔÏ ÉÈ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏÅ ÒÅÄÁËÔÉÒÏ×ÁÎÉÅ, ËÏÔÏÒÏÅ +Ó ÔÏÞËÉ ÚÒÅÎÉÑ ÆÕÎËÃÉÏÎÁÌØÎÏÊ ËÁÒÔÙ ÏÚÎÁÞÁÅÔ: ÍÙ ×ÙÄÅÌÑÅÍ ËÁËÕÀ-ÔÏ ÇÒÕÐÐÕ +ÔÏÞÅË (ÎÁÐÒÉÍÅÒ, ÎÁÒÉÓÏ×Á× ÚÁÍËÎÕÔÕÀ ÌÉÎÉÀ) É ÇÏ×ÏÒÉÍ: ÚÎÁÞÅÎÉÅ ËÁÒÔÙ +× ÜÔÉÈ ÔÏÞËÁÈ ÔÅÐÅÒØ ÂÕÄÅÔ ÔÁËÏÅ-ÔÏ. +

+ïÞÅ×ÉÄÎÏ, ÜÔÏÊ ÏÐÅÒÁÃÉÅÊ ÎÁÄÏ ÐÏÌØÚÏ×ÁÔØÓÑ Ó ÏÓÔÏÒÏÖÎÏÓÔØÀ, ÏÓÔÁ×É× +ÅÇÏ ÄÌÑ ÜÔÁÐÏ× ÐÅÒ×ÉÞÎÏÇÏ ××ÏÄÁ ÉÎÆÏÒÍÁÃÉÉ É ÅÅ ÏÂÎÏ×ÌÅÎÉÑ. + +

ïÐÅÒÁÃÉÉ Ó ËÁÒÔÁÍÉ.

+ +ôÅÐÅÒØ ÐÅÒÅÊÄÅÍ Ë ÔÏÍÕ, ÄÌÑ ÞÅÇÏ ×ÓÅ ÜÔÏ ÚÁÔÅ×ÁÌÏÓØ - Ë ÏÐÅÒÁÃÉÑÍ ÁÎÁÌÉÚÁ +ËÁÒÔ. +

+éÈ ÍÏÖÎÏ ÓÒÁÚÕ ÒÁÚÄÅÌÉÔØ ÎÁ Ä×Å ÂÏÌØÛÉÅ ÇÒÕÐÐÙ: +

    +
  1. ëÏÇÄÁ ÎÁÍ × ÒÅÚÕÌØÔÁÔÅ ÎÕÖÎÏ ÐÏÌÕÞÉÔØ ËÁÒÔÕ +
  2. ëÏÇÄÁ × ÒÅÚÕÌØÔÁÔÅ ÍÙ ÐÏÌÕÞÁÅÍ ËÁËÕÀ-ÔÏ ÓÕÍÍÁÒÎÕÀ ÉÎÆÏÒÍÁÃÉÀ + (ÏÂÙÞÎÏ × ÆÏÒÍÅ ÔÁÂÌÉÃÙ). +
+ïÇÒÁÎÉÞÉÍÓÑ ÐÏËÁ ÐÅÒ×ÏÊ ÇÒÕÐÐÏÊ ÏÐÅÒÁÃÉÊ. +

1. úÁÞÁÓÔÕÀ, ÞÔÏÂÙ ÐÏÌÕÞÉÔØ ÉÎÔÅÒÅÓÕÀÝÉÊ ÎÁÓ ÐÏËÁÚÁÔÅÌØ × ËÁËÏÊ-ÔÏ +ÔÏÞËÅ, ÎÁÍ +ÄÏÓÔÁÔÏÞÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÏÌØËÏ ÚÎÁÞÅÎÉÑ ÎÅËÏÔÏÒÙÈ ÄÒÕÇÉÈ ÐÏËÁÚÁÔÅÌÅÊ +× ÔÏÊ ÖÅ ÔÏÞËÅ. +

+îÁÐÒÉÍÅÒ, ÄÌÑ ÒÁÓÞÅÔÁ ÐÏÔÅÎÃÉÁÌØÎÏÊ ÜÒÏÚÉÉ ÎÁÍ ÎÕÖÎÙ Ó×ÅÄÅÎÉÑ Ï +ÍÅÈÁÎÉÞÅÓËÏÍ ÓÏÓÔÁ×Å ÐÏÞ×, ÕËÌÏÎÁÈ, ÄÌÉÎÅ ÓËÌÏÎÏ×, ÎÁÐÏÞ×ÅÎÎÏÍ ÐÏËÒÏ×Å +É Ô.Ä. åÓÌÉ ×ÓÅ ÜÔÉ ÄÁÎÎÙÅ ÅÓÔØ Õ ÎÁÓ × ×ÉÄÅ ËÁÒÔ, ÔÏ ÐÒÉÍÅÎÉ× +ÉÚ×ÅÓÔÎÏÅ ÕÒÁ×ÎÅÎÉÅ Ë ËÁÖÄÏÊ ÔÏÞËÅ ÔÅÒÒÉÔÏÒÉÉ, ÍÙ ÐÏÌÕÞÉÍ ÎÏ×ÕÀ ËÁÒÔÕ. +

+ôÒÁÄÉÃÉÏÎÎÏ × ÄÌÑ ÜÔÏÇÏ ÓÎÁÞÁÌÁ ÎÁËÌÁÄÙ×ÁÀÔ ÄÒÕÇ ÎÁ ÄÒÕÇÁ ×ÓÅ ÉÓÈÏÄÎÙÅ +ËÁÒÔÙ É ÐÏÌÕÞÁÀÔ ÓÅÔËÕ ÍÉÎÉÍÁÌØÎÙÈ ËÏÎÔÕÒÏ×, × ËÏÔÏÒÙÈ ×ÓÅ ÉÓÈÏÄÎÙÅ +ÐÏËÁÚÁÔÅÌÉ ÏÄÎÏÒÏÄÎÙ, Á ÐÏÔÏÍ ÄÌÑ ËÁÖÄÏÇÏ ÔÁËÏÇÏ ËÏÎÔÕÒÁ ÒÁÓÞÉÔÙ×ÁÀÔ +ÉÔÏÇÏ×ÙÊ ÐÏËÁÚÁÔÅÌØ. +

+åÓÌÉ ÖÅ ÍÙ ×ÙÐÏÌÎÉÍ ÒÁÓÓÞÅÔ ÄÌÑ ËÁÖÄÏÊ ÔÏÞËÉ ËÁÒÔÙ (Á ÉÈ ËÏÎÅÞÎÏÅ ÞÉÓÌÏ, +ÐÏÓËÏÌØËÕ ×ÓÅ ÉÓÈÏÄÎÙÅ ËÁÒÔÙ ÉÍÅÀÔ ËÏÎÅÞÎÏÅ ÒÁÚÒÅÛÅÎÉÅ), ÔÏ +ÉÔÏÇÏ×ÙÅ ËÏÎÔÕÒÁ ÏÂÒÁÚÕÀÔÓÑ ÓÁÍÉ, ËÁË ÇÒÕÐÐÙ ÔÏÞÅË ÇÄÅ ×ÙÞÉÓÌÅÎÎÙÊ +ÐÏËÁÚÁÔÅÌØ ÉÍÅÅÔ ÏÄÉÎÁËÏ×ÙÅ ÚÎÁÞÅÎÉÑ. +

+íÁÔÅÍÁÔÉÞÅÓËÉ ÜÔÏ ÏÐÉÓÙ×ÁÅÔÓÑ ÐÏÎÑÔÉÅÍ ÆÕÎËÃÉÏÎÁÌÁ - ÏÐÅÒÁÃÉÉ, +ËÏÔÏÒÁÑ ÐÏ ÎÅÓËÏÌØËÉÍ ÉÓÈÏÄÎÙÍ ÆÕÎËÃÉÑÍ ÓÔÒÏÉÔ ÒÅÚÕÌØÔÉÒÕÀÝÕÀ. +

+ó ÐÒÁËÔÉÞÅÓËÏÊ ÔÏÞËÉ ÚÒÅÎÉÑ ÐÒÏ×ÅÓÔÉ ×ÙÞÉÓÌÅÎÉÑ × ÎÅÓËÏÌØËÉÈ ÍÉÌÌÉÏÎÁÈ +ÔÏÞÅË ÇÏÒÁÚÄÏ ÂÙÓÔÒÅÅ, ÞÅÍ ×ÙÞÉÓÌÑÔØ ÐÅÒÅÓÅÞÅÎÉÑ ÓÏÔÅÎ ËÏÎÔÕÒÏ×. +

+2. éÎÏÇÄÁ ÄÌÑ ×ÙÞÉÓÌÅÎÉÑ ÚÎÁÞÅÎÉÑ ÐÏËÁÚÁÔÅÌÑ × ÔÏÞËÅ ÎÁÍ ÎÕÖÎÁ + ÉÎÆÏÒÍÁÃÉÑ Ï ÎÅËÏÔÏÒÏÊ ÏËÒÅÓÔÎÏÓÔÉ ÜÔÏÊ ÔÏÞËÅ (ÔÅÏÒÅÔÉÞÅÓËÉ - +× ÂÅÓËÏÎÅÞÎÏ ÍÁÌÏÊ, ÎÁ ÐÒÁËÔÉËÅ - ÎÅ ÍÅÎØÛÅ ÒÁÚÒÅÛÅÎÉÑ ËÁÒÔÙ) +ëÌÁÓÓÉÞÅÓËÉÊ ÐÒÉÍÅÒ ÔÁËÏÊ ÚÁÄÁÞÉ - ÎÁÈÏÖÄÅÎÉÅ ÕËÌÏÎÏ× ÐÏ +ÇÉÐÓÏÍÅÔÒÉÞÅÓËÏÊ ËÁÒÔÅ. äÒÕÇÏÊ, ÓÔÏÌØ ÖÅ ÈÁÒÁËÔÅÒÎÙÊ ÐÒÉÍÅÒ - ÔÅËÓÔÕÒÁ +ÉÚÏÂÒÁÖÅÎÉÑ ÎÁ ÁÜÒÏÆÏÔÏÓÎÉÍËÅ. +

+3. é, ÎÁËÏÎÅÃ, ÉÎÏÇÄÁ ÎÁÍ ÎÕÖÎÙ ÕÄÁÌÅÎÎÙÅ ÔÏÞËÉ, ÏÂÌÁÄÁÀÝÉÅ +ÏÐÒÅÄÅÌÅÎÎÙÍÉ Ó×ÏÊÓÔ×ÁÍÉ. îÁÐÒÉÍÅÒ, ×Ï ÍÎÏÇÉÈ ÚÁÄÁÞÁÈ ÒÁÚÍÅÝÅÎÉÑ +ÎÁÓ ÉÎÔÅÒÅÓÕÅÔ ÒÁÓÓÔÏÑÎÉÅ ÄÏ ÂÌÉÖÁÊÛÅÊ ÄÏÒÏÇÉ, ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ +ËÁÒÔ ÈÉÍÉÞÅÓËÏÇÏ ÓÏÓÔÁ×Á ÎÁÓ ÉÎÔÅÒÅÓÕÀÔ ÎÅÓËÏÌØËÏ ÂÌÉÖÁÊÛÉÈ ÔÏÞÅË +ÏÐÒÏÂÏ×ÏÁÎÉÑ. +

+éÎÔÅÒÅÓÎÏÊ ÔÅÍÏÊ ÄÌÑ ÉÓÓÌÅÄÏ×ÁÎÉÑ Ñ×ÌÑÅÔÓÑ ×ÏÚÍÏÖÎÏÓÔØ ËÏÍÐÏÚÉÃÉÉ +ÆÕÎËÃÉÏÎÁÌÏ×, ÐÏÓËÏÌØËÕ ÒÁÂÏÔÁ Ó ËÏÍÐÏÚÉÃÉÑÍÉ ÆÕÎËÃÉÏÎÁÌÏ× +ÐÏÚ×ÏÌÑÅÔ ÓÞÉÔÁÔØ ÓÌÏÖÎÙÅ ÍÏÄÅÌÉ ÚÁ ÏÄÉÎ ÐÒÏÈÏÄ, ÂÅÚ ÓÏÚÄÁÎÉÑ +ÓÌÏÖÎÙÈ ÐÒÏÍÅÖÕÔÏÞÎÙÈ ËÁÒÔ. +

+ïÞÅ×ÉÄÎÏ, Ë ÏÐÅÒÁÃÉÑÍ 1-Ê ÇÒÕÐÐÙ ËÏÍÐÏÚÉÃÉÑ ÐÒÉÍÅÎÉÍÁ ×ÓÅÇÄÁ +z=f(g(x)) ÐÏÓÞÉÔÁÔØ ÎÅ ÓÌÏÖÎÅÅ ÞÅÍ y=g(x) z=f(y). +

+óÌÏÖÎÅÅ Ó ÏÐÅÒÁÃÉÑÍÉ ×ÔÏÒÏÊ ÇÒÕÐÐÙ, ÐÏÓËÏÌØËÕ ÅÓÌÉ × ×ÙÞÉÓÌÅÎÉÉ +f(x) ÕÞÁÓÔ×ÕÀÔ ÚÎÁÞÅÎÉÑ g(x+dx) ÉÈ ÎÁÄÏ ×ÙÞÉÓÌÉÔØ ÚÁÒÁÎÅÅ, Á ÅÓÌÉ +É ÏÎÉ ÔÒÅÂÕÀÔ ÏËÒÅÓÔÎÏÓÔÉ... óÒÁ×ÎÉÔÅ, ÎÁÐÒÉÍÅÒ, Ó ÆÏÒÍÕÌÏÊ ×ÔÏÒÏÊ +ÐÒÏÉÚ×ÏÄÎÏÊ ÓÌÏÖÎÏÊ ÆÕÎËÃÉÉ. +

+åÓÌÉ ÖÅ ÒÅÞØ ÉÄÅÔ Ï ÎÅÌÏËÁÌØÎÙÈ ÏÐÅÒÁÃÉÑÈ, ÔÁËÉÈ ËÁË ÂÕÆÅÒÉÚÁÃÉÑ +É ÉÎÔÅÒÐÏÌÑÃÉÑ, ÂÅÚ ÓÏÈÒÁÎÅÎÉÑ ÐÒÏÍÅÖÕÔÏÞÎÙÈ ÒÅÚÕÌØÔÁÔÏ× × ×ÉÄÅ +ËÁÒÔ ×ÉÄÉÍÏ ÎÅ ÏÂÏÊÔÉÓØ. +

+ +

÷ÉÚÕÁÌÉÚÁÃÉÑ ËÁÒÔ É ÍÅÔÁÄÁÎÎÙÅ.

+ +äÁÔØ ÓÔÒÏÇÏÅ ÍÁÔÅÍÁÔÉÞÅÓËÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ËÁÒÔÙ ËÏÎÅÞÎÏ ÈÏÒÏÛÏ, ÎÏ +ÉÓÓÌÅÄÏ×ÁÔÅÌÉ ÐÒÉ×ÙËÌÉ ×ÉÄÅÔØ ËÁÒÔÕ ÐÅÒÅÄ ÇÌÁÚÁÍÉ. +

+üÔÏ ËÁË ÒÁÚ ÔÏ, ÞÅÇÏ ÎÅ ÐÏÚ×ÏÌÑÀÔ ÓÕÝÅÓÔ×ÕÀÝÉÅ çéó. ÷ ÎÉÈ ÓÏÚÄÁÎÉÅ +ËÁÒÔÏÇÒÁÆÉÞÅÓËÏÊ ËÏÍÐÏÚÉÃÉÉ ÎÁ ÜËÒÁÎÅ ÉÌÉ ÎÁ ÂÕÍÁÇÅ - ÄÌÉÔÅÌØÎÙÊ +É ÓÌÏÖÎÙÊ ÐÒÏÃÅÓÓ, ÓÏ×ÅÒÛÅÎÎÏ ÎÅ Ó×ÑÚÁÎÎÙÊ Ó ÓÏÂÓÔ×ÅÎÎÏ ÐÒÏÓÔÒÁÎÓÔ×ÅÎÎÙÍ +ÁÎÁÌÉÚÏÍ É ÍÏÄÅÌÉÒÏ×ÁÎÉÅÍ. +

+äÁ, ÓÔÁÄÉÑ ÄÉÚÁÊÎÁ ÎÅÏÂÈÏÄÉÍÁ, ËÏÇÄÁ ×Ù ÇÏÔÏ×ÉÔÅ ËÁÒÔÕ ÄÌÑ ÐÕÂÌÉËÁÃÉÉ, +ÎÏ ×ÏÚÍÏÖÎÏÓÔØ ÂÙÓÔÒÏ Õ×ÉÄÅÔØ ÒÅÚÕÌØÔÁÔ ËÁËÏÊ-ÔÏ ÏÐÅÒÁÃÉÉ × ÂÏÌÅÅ +ÍÅÎÅÅ ÁÄÅË×ÁÔÎÙÈ ËÁÒÔÏÇÒÁÆÉÞÅÓËÉÈ ÚÎÁËÁÈ ÍÏÖÅÔ ÉÚÂÁ×ÉÔØ ÏÔ ÍÎÏÖÅÓÔ×Á +ÏÛÉÂÏË. +

+æÕÎËÃÉÏÎÁÌØÎÙÅ ËÁÒÔÙ ÍÏÇÕÔ ÐÏÍÏÞØ É ÚÄÅÓØ. +ðÏÓËÏÌØËÕ ËÁÖÄÁÑ ËÁÒÔÁ Õ ÎÁÓ ÏÔÏÂÒÁÖÁÅÔ ÒÏ×ÎÏ ÏÄÉÎ ÐÏËÁÚÁÔÅÌØ, +ÍÙ ÍÏÖÅÍ Ó×ÑÚÁÔØ ÓÐÏÓÏ ËÁÒÔÏÇÒÁÆÉÞÅÓËÏÇÏ ÉÚÏÂÒÁÖÅÎÉÑ ÎÅÐÏÓÒÅÄÓÔ×ÅÎÎÏ +Ó ÍÎÏÖÅÓÔ×ÏÍ ÚÎÁÞÅÎÉÊ ËÁÒÔÙ. (×Ï ÍÎÏÇÉÈ ÏÂÌÁÓÔÑÈ ÎÁÕË Ï ÚÅÍÌÅ ÜÔÏ +ÕÖÅ É ÔÁË ÓÄÅÌÁÎÏ - ÓÕÝÅÓÔ×ÕÀÔ ÓÔÁÎÄÁÒÔÎÙÅ Ã×ÅÔÁ ÄÌÑ ÔÉÐÏ× ÐÏÞ× ÉÌÉ +ÇÅÏÈÒÏÎÏÌÏÇÉÞÅÓËÉÈ ÜÐÏÈ). +

+ðÏÓÌÅ ÜÔÏÇÏ, ÐÏÓÔÒÏÉ× ËÁÒÔÕ ÍÙ ÍÏÖÅÍ ÎÅÍÅÄÌÅÎÎÏ ÅÅ ÉÚÏÂÒÁÚÉÔØ × +ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÕÓÌÏ×ÎÙÈ ÚÎÁËÁÈ, Á ÚÁÄÁÞÁ ÄÉÚÁÊÎÁ ËÁÒÔÏÇÒÁÆÉÞÅÓËÏÊ +ËÏÍÐÏÚÉÃÉÉ ÒÁÓÐÁÄÁÅÔÓÑ ÎÁ ÓÏÚÄÁÎÉÅ ÎÁÂÏÒÁ ÚÎÁËÏ× ÄÌÑ ËÁÖÄÏÇÏ +ÐÏËÁÚÁÔÅÌÑ É ÉÚÏÂÒÁÖÅÎÉÅ ÎÁ ÏÄÎÏÍ ÌÉÓÔÅ ÔÅÈ ÓÌÏÅ×, ËÏÔÏÒÙÅ ÔÅÍÁÔÉÞÅÓËÉ +ÉÎÔÅÒÅÓÎÏ ÒÁÓÓÍÁÔÒÉ×ÁÔØ ×ÍÅÓÔÅ, ÔÁË , ÞÔÏÂÙ ÏÎÉ ÎÅ ÍÅÛÁÌÉ ÄÒÕÇ ÄÒÕÇÕ. +

+

íÁÓÛÔÁÂÎÙÊ ÒÑÄ ÉÌÉ ÉÅÒÁÒÈÉÑ ÒÅÇÉÏÎÏ×

. +äÁÌÅËÏ ÎÅ ×ÓÅÇÄÁ ÒÁÂÏÔÁ Ó ËÁÒÔÁÍÉ Ó×ÏÄÉÔÓÑ Ë ÒÁÂÏÔÅ Ó ÏÄÎÏÊ É ÔÏÊ ÖÅ +ÔÅÒÒÉÔÏÒÉÅÊ. äÏÓÔÁÔÏÞÎÏ ÞÁÓÔÏ ÐÒÉÈÏÄÉÔÓÑ ÉÍÅÔØ ÄÅÌÏ Ó ÉÅÒÁÒÈÉÅÊ +ÍÁÓÛÔÁÂÏ× É ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÅÊ ÉÅÒÁÒÈÉÅÊ ÔÅÒÒÉÔÏÒÉÊ. +

+ðÒÉ ÜÔÏÍ ÉÓÐÏÌØÚÕÅÍÙÅ ËÁÒÔÏÇÒÁÆÉÞÅÓËÉÅ ÐÒÏÅËÃÉÉ É ËÌÁÓÓÉÆÉËÁÃÉÉ +ËÁÞÅÓÔ×ÅÎÎÙÈ ÐÏËÁÚÁÔÅÌÅÊ (ÐÏÞ×, ÒÁÓÔÉÔÅÌØÎÏÓÔÉ É Ô.Ä.) ÚÁËÏÎÏÍÅÒÎÏ +ÍÅÎÑÀÔÓÑ Ó ÉÚÍÅÎÅÎÅÍ ÍÁÓÛÔÁÂÁ. +

+äÁÌÅËÏ ÎÅ ×ÓÅÇÄÁ ÎÁ ÎÕÖÎÏÍ ÍÁÓÛÔÁÂÎÏÍ ÕÒÏ×ÎÅ ÅÓÔØ ×ÓÑ ÎÅÏÂÈÏÄÉÍÁÑ +ÉÎÆÏÒÍÁÃÉÑ. ðÏÜÔÏÍÕ ÞÁÓÔÏ ×ÏÚÎÉËÁÅÔ ÚÁÄÁÞÁ ÌÉÂÏ ÓÏÂÒÁÔØ ËÁÒÔÕ +ÉÚ ÂÏÌÅÅ ËÒÕÐÎÏÍÁÓÛÔÁÂÎÙÈ ËÕÓËÏ×, Ó ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÊ ÇÅÎÅÒÁÌÉÚÁÃÉÅÊ, +ÌÉÂÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÒÁÇÍÅÎÔ ÂÏÌÅÅ ÍÅÌËÏÍÁÓÛÔÁÂÎÏÊ ËÁÒÔÙ. ðÏÔÅÒÑ ÔÏÞÎÏÓÔÉ +ÔÕÔ ÎÅÉÚÂÅÖÎÁ, ÎÏ ÞÁÓÔÏ ÌÕÞÛÅ ÎÅÔÏÞÎÙÅ ÄÁÎÎÙÅ, ÞÅÍ ÎÉËÁËÉÈ. +

+ðÏÜÔÏÍÕ ÍÙ ××ÏÄÉÍ ËÏÎÃÅÐÃÉÀ ÒÅÇÉÏÎÁ. òÅÇÉÏÎ ÜÔÏ ÇÒÕÐÐÁ ËÁÒÔ ÎÁ ÏÄÎÕ +É ÔÕ ÖÅ ÔÅÒÒÉÔÏÒÉÀ. ÷ÓÅ ËÁÒÔÙ ÒÅÇÉÏÎÁ ÉÍÅÀÔ ÏÄÎÕ É ÔÕ ÖÅ ËÏÏÒÄÉÎÁÔÎÕÀ +ÓÉÓÔÅÍÕ (ËÁÒÔÏÇÒÁÆÉÞÅÓËÕÀ ÐÒÏÅËÃÉÀ) ÎÏ ÍÏÇÕÔ ÒÁÚÌÉÞÁÔØÓÑ ÐÏ ÒÁÚÒÅÛÅÎÉÀ. +ðÏÓÌÅÄÎÅÅ ÎÅ ÍÅÛÁÅÔ ÓÏ×ÍÅÓÔÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÈ × ÁÎÁÌÉÚÅ. +äÌÑ ÔÏÇÏ ÞÔÏÂÙ ÉÓÐÏÌØÚÏ×ÁÔØ ËÁÒÔÕ ÉÚ ÄÒÕÇÏÇÏ ÒÅÇÉÏÎÁ ×ÍÅÓÔÅ Ó ËÁÒÔÁÍÉ +ÔÅËÕÝÅÇÏ, ÅÅ ÎÁÄÏ ÓËÏÐÉÒÏ×ÁÔØ × ÜÔÏÔ ÒÅÇÉÏÎ. ðÒÉ ÜÔÏÍ ÏÎÁ ÂÕÄÅÔ +Á×ÔÏÍÁÔÉÞÅÓËÉ ÐÒÅÏÂÒÁÚÏ×ÁÎÁ × ÎÕÖÎÕÀ ÐÒÏÅËÃÉÀ, ÎÏ ÓÏÈÒÁÎÉÔ Ó×ÏÅ ÏÒÉÇÉÎÁÌØÎÏÅ +ÒÁÚÒÅÛÅÎÉÅ É ÌÅÇÅÎÄÕ. åÅ ÇÅÎÅÒÁÌÉÚÁÃÉÑ (ÕÍÅÎØÛÅÎÉÅ ÒÁÚÒÅÛÅÎÉÑ) É +ÐÅÒÅËÌÁÓÓÉÆÉËÁÃÉÑ ÌÅÇÅÎÄÙ - ÄÅÌÏ ÐÏÌØÚÏ×ÁÔÅÌÑ. +

+òÅÇÉÏÎÙ ÉÍÅÀÔ ÉÅÒÁÒÈÉÞÅÓËÕÀ ÓÉÓÔÅÍÕ ÓÏÐÏÄÞÉÎÅÎÉÑ. ðÏËÁÖÅÍ, ÞÔÏ ÜÔÏ +ÔÁËÏÅ ÎÁ ÐÒÉÍÅÒÅ ÁÄÍÉÎÉÓÔÒÁÔÉ×ÎÏÇÏ ÄÅÌÅÎÉÑ òÏÓÓÉÉ. +

+òÅÇÉÏÎ ×ÅÒÈÎÅÇÏ ÕÒÏ×ÎÑ - òÏÓÓÉÑ × ÃÅÌÏÍ. èÁÒÁËÔÅÒÎÏÅ ÒÁÚÒÅÛÅÎÉÅ 1-2ËÍ, + ÐÒÏÅËÃÉÑ ÓËÏÒÅÅ ×ÓÅÇÏ ËÏÎÉÞÅÓËÁÑ. +÷ ÜÔÏÔ ÒÅÇÉÏÎ ×ÈÏÄÑÔ 86 ÐÏÄÒÅÇÉÏÎÏ× - ÁÄÍÉÎÉÓÔÒÁÔÉ×ÎÙÈ ÏÂÌÁÓÔÅÊ. +òÁÚÒÅÛÅÎÉÅ × ÎÉÈ ÏÔ 500 ÄÏ 100 Í, Á ÐÒÏÅËÃÉÑ ÍÏÖÅÔ ÂÙÔØ ËÏÎÉÞÅÓËÏÊ, +ËÏÓÏÊ ÁÚÉÍÕÔÁÌØÎÏÊ ÉÌÉ UTM(çÁÕÓÓÁ), × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÒÁÚÍÅÒÏ× ÏÂÌÁÓÔÉ. +

+åÓÌÉ ÄÅÌÅÎÉÅ ÏÄÎÏÇÏ ÒÅÇÉÏÎÁ ÓÒÁÚÕ ÎÁ 86 ÞÁÓÔÅÊ ËÁÖÅÔÓÑ ÓÌÉÛËÏÍ ÍÅÌËÉÍ, +ÍÏÖÎÏ ××ÅÓÔÉ ÐÒÏÍÅÖÕÔÏÞÎÙÊ ÕÒÏ×ÅÎØ ÜËÏÎÏÍÉÞÅÓËÉÈ ÒÁÊÏÎÏ×. +

+ëÁÖÄÁÑ ÏÂÌÁÓÔØ ÓÏÓÔÏÉÔ ÉÚ ÒÁÊÏÎÏ×. ðÒÉ ÎÁÌÉÞÉÉ ÉÓÈÏÄÎÙÈ ÄÁÎÎÙÈ +ÍÏÖÎÏ ××ÅÓÔÉ ÅÝÅ É ÐÏÄÒÅÇÉÏÎÙ ÄÌÑ ÒÁÊÏÎÏ× - ÏÔÄÅÌØÎÙÅ ÈÏÚÑÊÓÔ×Á Ó +ÒÁÚÒÅÛÅÎÉÅÍ ÐÏÒÑÄËÁ ÍÅÔÒÏ× (ÍÁÓÛÔÁ 1:5000 - 1:10000) +

+óÉÓÔÅÍÁ ÐÏÚ×ÏÌÑÅÔ ÐÅÒÅÊÔÉ ÎÁ ÓÏÓÅÄÎÉÊ ÕÒÏ×ÅÎØ × ÜÔÏÊ ÉÅÒÁÒÈÉÉ - ÌÉÂÏ +ÐÏÄÎÑÔØÓÑ ××ÅÒÈ × ÏÂßÅÍÌÀÝÉÊ ÒÅÇÉÏÎ, ÌÉÂÏ, ×ÙÂÒÁ× ÎÕÖÎÙÊ ÐÏÄÒÅÇÉÏÎ +ÎÁ ÓÐÅÃÉÁÌØÎÏÊ ËÁÒÔÅ (× ÄÁÎÎÏÍ ÓÌÕÞÁÅ ÁÄÍÉÎÉÓÔÒÁÔÉ×ÎÏÊ) ÐÅÒÅÊÔÉ +× ÎÅÇÏ. +

+ðÒÉ ËÏÐÉÒÏ×ÁÎÉÉ ËÁÒÔÙ Ó ÎÉÖÎÅÇÏ ÕÒÏ×ÎÑ ÎÁ ×ÅÒÈÎÉÊ, ÏÎÁ ËÏÐÉÒÕÅÔÓÑ +ÃÅÌÉËÏÍ, Á ×ÏÔ ÐÒÉ ÏÂÒÁÔÎÏÍ ËÏÐÉÒÏ×ÁÎÉÉ ×ÏÚÎÉËÁÅÔ ÚÁÄÁÞÁ ×ÙÒÅÚÁÎÉÑ +ÎÕÖÎÏÇÏ ËÕÓËÁ. ïÄÉÎ ÉÚ ×ÏÚÍÏÖÎÙÈ ÐÕÔÅÊ ÅÅ ÒÅÛÅÎÉÑ - ÉÍÅÔØ × ËÁÖÄÏÍ +ÒÅÇÉÏÎÅ ÓÐÅÃÉÁÌØÎÕÀ ËÁÒÔÕ (×ÉÄÉÍÏ, ÔÕ ÖÅ, ËÏÔÏÒÁÑ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ +ÐÏÉÓËÁ ÓÕÂÒÅÇÉÏÎÏ×), ÏÂÌÁÓÔØ ÏÐÒÅÄÅÌÅÎÉÑ ËÏÔÏÒÏÊ ÓÏ×ÐÁÄÁÅÔ ÓÏ ×ÓÅÊ +ÔÅÒÒÉÔÏÒÉÅÊ ÒÅÇÉÏÎÁ, É ÐÏÌØÚÏ×ÁÔØÓÑ ÅÊ ËÁË ÍÁÓËÏÊ. + +

ðÒÉÎÃÉÐÙ ÐÏÓÔÒÏÅÎÉÑ ÓÉÓÔÅÍÙ

+ +óÉÓÔÅÍÁ ÓÔÒÏÉÔÓÑ ×ÏËÒÕÇ ×ØÀÅÒÁ/ÒÅÄÁËÔÏÒÁ ËÁÒÔ. +üÔÏÔ ×ØÀÅÒ/ÒÅÄÁËÔÏÒ ÕÍÅÅÔ ×Ù×ÏÄÉÔØ ËÁÒÔÙ ÂÏÌÅÅ-ÍÅÎÅÅ ×ÓÅÍÉ +ÓÕÝÅÓÔ×ÕÀÝÉÍÉ ÓÐÏÓÏÂÁÍÉ ËÁÒÔÏÇÒÁÆÉÞÅÓËÏÇÏ ÉÚÏÂÒÁÖÅÎÉÑ, × ÔÏÍ ÞÉÓÌÅ +ÎÁÐÒÉÍÅÒ ÓÌÏÊ ÛÔÒÉÈÏ×ËÁÍÉ ÐÏ×ÅÒÈ ÓÌÏÑ Ã×ÅÔÏ×. +

+ïÔËÒÙÔØ ÄÌÑ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ × ËÁÖÄÙÊ ËÏÎËÒÅÔÎÙÊ ÍÏÍÅÎÔ ÍÏÖÎÏ ÔÏÌØËÏ ÏÄÉÎ +ÓÌÏÊ. +

+ðÒÉ ÔÙËÁÎØÅ ÍÙÛØÀ × ÏËÎÏ ËÁÒÔÙ ÏÂÙÞÎÏ × ËÁËÏÍ-ÔÏ ÄÒÕÇÏÍ ÏËÎÅ +ÐÏËÁÚÙ×ÁÅÔÓÑ ÚÎÁÞÅÎÉÅ ÐÏ ÎÅËÏÔÏÒÙÍ ×ÙÂÒÁÎÎÙÍ ËÁÒÔÁÍ (×ÓÅ ×ÉÄÉÍÙÅ + +ÔÅ ËÏÔÏÒÙÅ ÐÏÌØÚÏ×ÁÔÅÌØ ÕËÁÚÁÌ Ñ×ÎÏ) × ÜÔÏÊ ÔÏÞËÅ. +

+íÅÎÀ ÓÉÓÔÅÍÙ ÐÏÚ×ÏÌÑÅÔ ×ÙÐÏÌÎÉÔØ ÌÀÂÙÅ ÏÐÅÒÁÃÉÉ ÁÎÁÌÉÚÁ, ÐÅÒÅÈÏÄ +ÍÅÖÄÕ ÒÅÇÉÏÎÁÍÉ É Ô.Ð. åÓÌÉ × ÒÅÚÕÌØÔÁÔÅ ÏÐÅÒÁÃÉÉ ÏÂÒÁÂÏÔËÉ ËÁÒÔ +ÓÏÚÄÁÎÁ ÒÏ×ÎÏ ÏÄÎÁ ÎÏ×ÁÑ ËÁÒÔÁ, ÔÏ ÏÎÁ ÚÁÍÅÝÁÅÔ × ÏËÎÅ ×ØÀÅÒÁ ÔÕ, +ËÏÔÏÒÁÑ ÂÙÌÁ ×Ù×ÅÄÅÎÁ Ã×ÅÔÏÍ (ÓÌÕÞÁÊ ÓÉÎÈÒÏÎÎÏÇÏ ×ÙÐÏÌÎÅÎÉÑ). +

+÷ÓÅ ÏÐÅÒÁÃÉÉ, ËÏÔÏÒÙÅ ÐÏÌØÚÏ×ÁÔÅÌØ ÍÏÖÅÔ ÐÒÏÉÚ×ÅÓÔÉ ÉÚ ÍÅÎÀ ÓÉÓÔÅÍÙ +ÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ÉÚ ÐÒÏÇÒÁÍÍÙ ÎÁ Tcl, ×ËÌÀÞÁÑ ÔÁËÉÅ ËÁË ÒÉÓÏ×ÁÎÉÅ +ÔÏÞËÉ ÉÌÉ ÌÉÎÉÉ × ÒÅÄÁËÔÏÒÅ + +

á×ÔÏÍÁÔÉÞÅÓËÁÑ ÁËÔÕÁÌÉÚÁÃÉÑ ËÁÒÔ.

+ +äÌÑ ËÁÒÔ ÓÏÚÄÁÎÎÙÈ × ÒÅÚÕÌØÔÁÔÅ ÏÐÅÒÁÃÉÊ ÏÂÒÁÂÏÔËÉ ÈÒÁÎÉÔÓÑ +ËÏÍÁÎÄÁ, ÓÏÚÄÁ×ÛÁÑ ËÁÒÔÕ, É ÓÐÉÓÏË ÉÓÈÏÄÎÙÈ ËÁÒÔ. ðÒÉ ×ÉÚÕÁÌÉÚÁÃÉÉ +ÜÔÏÊ ËÁÒÔÙ ÐÒÏ×ÅÒÑÅÔÓÑ, ÎÅ ÂÙÌÉ ÌÉ ÉÚÍÅÎÅÎÙ ËÁËÉÅ-ÔÏ ÉÚ ÉÓÈÏÄÎÙÈ +ËÁÒÔ, É ÅÓÌÉ ÄÁ, ÐÒÅÄÌÁÇÁÅÔÓÑ ÐÏ×ÔÏÒÉÔØ ÇÅÎÅÒÁÃÉÀ ËÁÒÔÙ. + + diff --git a/geography/fGIS/concepts.html b/geography/fGIS/concepts.html new file mode 100644 index 0000000..9ef78bb --- /dev/null +++ b/geography/fGIS/concepts.html @@ -0,0 +1,398 @@ + + + +f(GIS) concepts + + + +

f(GIS) + concepts

+ +
    +
  1. Data model +
      +
    1. Functional model +
    2. Layer classification +
    3. Implementation of data model +
    4. Regions and chartographic projection +
    +
  2. Program design +
      +
    1. Layer as Tcl object +
    2. Planchet - object for displaying maps +
    3. Drawing modes for raster layer +
    4. Low level objects +
    5. GIS operation +
    6. Utilities +
    7. Data access library +
    +
+ + + + + + +

Data model

+ +GIS is a software system for processing spatial data. So, adequate model +of spatial phenomena is most important thing for GIS. +

+It should provide way to represent spatial phenomena in computer memory, +allow to perform desired operation on this representation and let user +see the results in form, he used to. Ideally, GIS system should hide +complicated issues of internal data storage from user as well as text +processor hides questions of font rendering or kerning or SQL database +hides actual file layout and search technologies, providing simple, +but powerful relational operations instead. +

+Many modern +GIS systems, especially vector based, like ARC/Info, try to +represent map of spatial phenomena rather than spatial phenomena +itself. It leads to overcomplication of storage format and processing +algorithms, and makes user worry about such technical things as polygon +topology, which are completely irrelevant to his problem (say geology +or soil science), as font rendering hints and kerning is irrelevant to +contents of article, typesetted with some partcular font. Maps are +tool for analyse spatial data, widely used, but no more than tool. +GIS system should deal with them, becouse it is neccesary to use +existing data, which are represented on maps, and present results to +user in understandable form of maps, but while processing data we should +take into account properties of actual phenomena, rather then properties +of chartographic representation like polygons. +

+

Functional model

+ +In f(GIS) we use term layer to denote computer representation of +spatial phenomena. We define layer as function which maps geographical +coordinates to value of some property. Closest analogue of our +layer is spatial variable in geostatistics. +

+Layer values can be either real numbers or elements of some finite sets. +If you want to study more complicated spatial phenomena, it is better +to describe it as set of layers rather then individual layer with +structured value. Obvoisly you'll not need values of all attributes in +question for all desired calculations, and separating them makes your +actions more clear. +

+Becouse layers are defined as functions it is theoretically possible to +apply well develped mathematical apparatus of functional analysis to +them. + + +

Layer classification

+Layers can be classified by their area of definition and their set of +values. By area of definition we can distinguish between: + +
+
Two-dimensional layers +
which are defined on some contineous area. + It is most frequently used type of layers for physical geography. + Relief and soil type are perfect examples of such layers. Area of + definition of two-dimensional layers is usially finite, limited by + boundaries of study area or by availability of data. Areas which are + outside of area of definition are called offsite areas. +
One-dimensional layers +
are defined on set of lines within study area. Examples of such + layers are hydrography or railroad network. +
Zero-dimensional layers +
are defined on set of separate points. This layers can be used + for store information about sampling points or weather station +networks. +
+ +By the set of values layers can be classified to: +
+
Numeric layers +
whose values belong to some contineous interval on numeric axis, +for example relief layers, which have any value between lowest and +highest altitude in the study area. +
Classification layers +
which have finite set of values. f(GIS) allows to use arbitrary +strings as elements of such set. Soil map which has names of soil series +as values can be used as an example. +
+ +This simple classification covers all theoretically important types of +layers. Dealing with implementation we'll have to classify layers +further, for example, according to source of thematic data. But for +data analysis it is not significant whether data are stored in disk +file or come from some data asquition system on the fly. It is only +important to know type of values and whether they are defined for +any point of study area or not. + +

Implementation of data model

+ +Spatial phenomena seldom can be expressed by some mathematical equation. +Even if they can, finding of this equation is usially aim of analysis, +not a starting point. So, we need to store values of layers in any +point they are defined. Raster is natural way to store data for +two-dimensional layers.

+ (Raster is just big matrix of numeric values, stored +in special format to reduce storage space. If raster is used in GIS +processing, it should be known, how to find row and column numbers given +real word coordinates and vice versa) +

+f(GIS) uses raster data format developed for EPPL7 GIS system. This +format have several advantages - it is compressed and allows random +access at the same time and it is able to deal with very fine +resolution. For example Landscape map of exUSSR with spatial resolution +(raster cell size) 500m and more than 3000 distinct kinds of landscapes +occupies about 9MB of disk space. Due to such properties of data +format, it is advisable to work with raster cell size significantly less +then known accuracy of data. Resolution of maps can be compatible with +resolution of your scanner and printer - modern processors are powerful +enough to bear it, so raster doesn't mean loss of precession. +

+This data format is able to hold values in range 0..65535. While it is +always sufficient for classification layers, it can look that for +numeric layers it is better to use real numbers. But data always have +finite accuracy, which is usially less than 1/65535 of total range, +and even if we can take measurements with larger precession, we should +take into account spatial variability within one raster cell. +

+For example, if we have map of relief of Russia with 500 meter cell, +we need to represent range from -28 (Caspian coast) to 5642 (Elbrus) +meters above sea level. Thus smallest usable unit is about 10 cm. +Some points' altitude may be measured with more accuracy (for example, +triangualtion points), but each raster cell represents 500x500 meters +square which always would have more than 10cm of variability. +Even if value of our layer should have more precession in some part +of its range, we could use non-linear (for instance logarithmic) mapping +of raster cell values to layer values. +

+But even with compression, raster files occupy significant storage +space. So, we should avoid duplication of them if possible. Thus we +introduce concept of reclass tables. Reclass table maps values +of raster cell to another set of integer in arbitrary order. Don't mix +reclass table with mapping function which is used for convert raster +cell values to real units of numeric layer. For example if we have +statistical data of populations by county and want to create population +them as map, we can use reclass table over county map. Several counties +with different names, which have distinct values in county map raster, +can be mapped to same class in population density map if their population +density is same. +

+Point layer is just list of triplets < X, Y, Value >. Typically +point layer doesn't contain more than few thousands of points, so there +is no need to optimize performance or storage space. +

+Natural storage form of one-dimensional layer is vector format. +It is most questionable area in current fGIS design. There are a lot of +advantages of EPPL7 vector format (compactness, speed of processing), +but it have only one drawback, which overcomes them all - it can +associate only one value with whole vector object (polyline). But +if we are talking about the function, defined on set of lines, whe +should be prepared that this function (stream depth for instance) would +vary from one end of line to other. +

+It is also a question how intersections and joints of lines should +be stored/interpreted, becouse most interesting network analysis +algorithmes require ability to cross joints and intersections. +

+ +

Regions and chartographic projection

+ +Study area usially have hierarchical structure. For example Russia +can be subdivided to administrative regions, which consists of +districts. United States consists of states, which are divided into +counties. Often study is concerned only with one of such hierarchy +levels, but there are opposite examples. +

+Each hierarchy level have its typical data accuracy (which is rough +representation of map scale in GIS world, becouse GIS maps can be +arbitrarily scaled, but only certain scale range make sense for +particular data accuracy), chartographic projection (especially +significant for large areas like whole country or continent). +On thematic maps like soils or vegetation, different classifications +can be used in different scales. +

+So, f(GIS) uses concept of regions. Region is set of layers, +which cover almost same territory, have exactly same projection and +simular spatial resolution. Regions can be nested, i.e. region of +Russia can have several subregions of administrative regions, which +have subregions of districts etc. In this case there should be base +layer +which have subregion names as values. When copiing data between regions +f(GIS) authomatically performs neccessary projection and resolution + conversion using base layer as reference. Classification conversion, +if neccessary, should be performed by user, becouse it requires +knowledge in problem area. + +

Program design

+ +f(GIS) is designed as set of extensions to Tcl programming language +and set of independent utilities, which perform most time consuming +raster and vector processing tasks. Thus long operations can be launched +in background as separate while user continues to view/analyze data in +main program. +

+From users point of view, fGIS is Tcl application which allows him +to operate with set of layers from GUI as well as from Tcl command line. +It is essential design constraing that there should be no operation, +which can be performed from GUI, but couldn't be from Tcl script. There +should be way to automate everything. Other way around is enusred by +very nature of Tcl. Nothing prevent user, which have direct access to +Tcl interpreter from creating new button or menu item and binding any +Tcl command to it. +

+From programmers point of view, fGIS consists of several abstraction +levels, all available for extension and modification. And I think that +every fGIS user can eventually become programmer, if he discoveres need +to implement some, just invented, data analysis algorithm, or customize +graphical user interface to his needs. Relationship between fGIS +abstraction levels is shown on this figure. +

+Figure 1 +

+

Layer as Tcl object

+Layers in fGIS behave like objects in object-oriented programming +language. Once created with layer command they become tcl +commands itself (i.e. name of layer can be used as Tcl command), +just like Tk widget. Options of layer command allow to manipulate +properties of layer and store layer definition to file. This file +is just Tcl script which creates neccessary subobjects and invokes +appropriate command to create layer. +

Layer have following properties +

+
It can return value by coordinates +
It is why whole thing is about +
It can one or more ways to draw itself +
Raster layer can be drawn in opaque colors, so only offsite area is +transparent or using transparent monochrome patterns, thus allowing to +overlay one raster over another. In most existing raster GIS, like +Idrisi only vector or point layers can be overlayed over raster. +

+In f(GIS) any +layer can be drawn as overlay +There are three drawing modes for raster layer, +color, pattern and symbol. +

It has underlying data source +
Data source for layers typically consist of some object which can + return integer value given coordinate (raster file, combined with +reclass table, for example) and legend table or map +function which maps values of underlying raster object to +thematically meaningful values. +
It has visualization parameters +
visualization fo layer is controlled by several parameters such as +color palette, pattern set, flag, indicating if boundaries between +classes are drawn or not. All these parameters can be changed +interactively. +
It has metadata +
Metadata for layer typically include layer title, units in which +its values are managed, spatial resolution and value precession. +Chartographic projection is property of region rather than layer. +
+ +Besides layer types described above fGIS have +object layer type. This layer type can consist of any objects +allowed in Tcl canvas - lines, arcs, polygons, images with only one +thematic value for each object. This type is primarily for annotation +purposes, but also can be used as substitute for vector layers, while +later are not developed +

+

Planchet - object for displaying maps

+Another type of object which is essential for fGIS user is +planchet. It is Tk widget like canvas (and actially derived from +canvas) which has chartographic projection and real-world coordinates. +It is used for displaying layers and picking points on them. Becouse +it has real-world coordinates and physical size on the screen, it always +knows its scale. When scale is changed (via zoom or window resize operation), +all layers currently displayed on planchet are redrawn appropriately. +

+ +Planchet also have look feature. If right mouse button is pressed +on some point in planchet, it displays values of several layers in this +point in pop-up window. +

+There can be also "friend widgets" like status line which +display current coordinates if mouse is over planchet or zoom/unzoom +buttons which change its state depending of current state of planchet. +

+

Drawing modes for raster layer

+ +f(GIS) supports three drawing modes for raster layers - color, pattern +and symbol mode. +
+
In color mode,
each value (or range of values, if +values are real number) of layer corresponds with particular color on +screen/paper. This is simplest drawing mode and it is supported by all +raster-oriented GIS. +
In pattern mode
contineous areas of same class are filled +by black and white patterns, which is suitable for black and white +printers. But this mode allows much more - patterns can have any color +and background of pattern is transparent rather then white, so patterned +layer can be overlaid over other raster layers. Boundaries between +areas with different classes (polygons) can be highlighted in this mode as well as +in color mode. +
Symbol mode
looks much like pattern mode and use same pattern +sets as it. But it handles patterns differently. In pattern mode, +patterns can be cut if polygon boundary crosses rectangle, representing +pattern element. In symbol mode pattern elemet is interpreted like icon, +which can be either drawn entirely, or not drawn at all. So visible area +of map is divided into rectangular grid of size of pattern element and +each cell of this grid is filled with pattern, apropriate for central +point of this cell. +
+Differences between these thre modes are shown on following figure: +Figure 2 + + +

Low level objects

+ +There are additional objects like rasters, palettes and pattern sets. +But user seldom need to operate on them directly. They are primarily +for developers of new layer types. + + +

GIS operation

+GIS operation like calculationg buffer zones or computing new layer +from several existing are performed by separate utilities running in background. For user convinience +there are tcl procedures which take one or more layer names as arguments +and call appropriate utility. +

+Example of such procedure is interregion copy command, which tooks +layer name and name of target region, determines projections and calls +projection conversion program. +

+In some cases such procedures need to perform sufficient preprocessing +of user-supplied arguments + +

Utilities

+ +GIS processing utilities are more general than fGIS. They use just +data files and user-supplied arguments. So they can be used separately +from fGIS, for example by users of EPPL7 GIS. Utilities are designed +for batch environment, so they use exit codes to report status and +stdin/stdout to recieve and return values which are not fit in command +line. Important concept of these utilities is that user shouldn't worry +about raster cell size. All utilites which operate on several raster +files are able to deal with files with different cell sizes as long +as there is non-empty intersection in terms of real-world coordinates. + +

Data access library

+ +Both low-level Tcl objects (rasters, vectors) and utilites use common +C library to access data files. This library provides appropriately +high-level framework for those who want implement own data analysis + algorithmes. For example it includes iterator routines, which recieve +user-written function and open raster file and perform this function +on every cell of given file. While library operates primarily in terms +of raster cells (which can be important for cellular automata +algorithmes, which need to distinguish between ``this cell'' and +``neighbouring cell'') it provides ways to process files with different +cell sizes simulateously. + + + + + + + + + + + + + diff --git a/geography/fGIS/drawing-modes.gif b/geography/fGIS/drawing-modes.gif new file mode 100644 index 0000000000000000000000000000000000000000..d47f3417a67343d09e3033f3f19becdbbef23e3b GIT binary patch literal 2800 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 + +fGIS project + + +

f(GIS) project

+ +fGIS stands for "functional GIS". It means that fGIS uses +functional data model rather than object-oriented. Spatial phenomena +are interpreted as functions of spatial coordinates, defined on +some subset of earth surface. Such subset can be contineous area, +or set of lines, like transport or hydrography network, or even +set of isolated points. +

+ +I hope that such approach would allow to develop powerful map operation +language much like simple relational model of tabular data give birth to SQL. +

+Idea of fGIS was born when I've worked on DOS with EPPL7 and Arc/Info GIS systems. I've found that +on most tasks, related with natural sciences, EPPL7 outperforms Arc/Info +hundred times or so. So, I wanted to have system which is open-source, +have purified ideology, and is free from some EPPL7 limitations, caused +by 16-bit nature of DOS. Later I've found that GRASS already implements most of my ideas, +but GRASS is huge and knowing how other raster GIS like IDRISI are outperformed +by EPPL7, I have very few hopes that its existense makes my efforts useless. +

+Concepts of project, both data model and program design are described +on separate page +

+If you could read Russian, you can read old conceptual paper on functional GIS. + +

Project structure

+ +To avoid inventing of yet another, incompatible scripting language, we +decided to develop f(GIS) as extension to Tcl/Tk. It give us not only +full-featured macro language, but also cross-platform GUI and large set +of extensions, including interfaces to major RDBMS servers. +

+fGIS project now consists of following parts: +

    +
  1. Portable C library to access EPPL7 data files.
    + Documentation in russian language and PDF format + is available. Later, I've decided to drop EPPL DGT vecrtor format in + favor of my own, which would be more suitable for fGIS concept. DGT + is bit too object oriented for me, while it is most compact and fast + of non-topology vector GIS formats available. +
  2. Environmental planning Utilities - reimplementation of major EPPL7 + commands. EPPL7 stands for Environmental Planning Programming Language, + but I don't want special language for it. There are lot of existing ones. + I prefer to use Unix toolbox philosophy, so it is set of independednt + utilities. +

    + Not all of this utilites are written yet. + +

  3. Tcl extensions to visualize data + It is simple and most portable way to write map viewer. Planned + features include drawing of raster maps as semi-transparent patterned + images, which allow to overlay raster over raster, but now only + colored maps work. This extension includes commands for editing raster + files and for spatial queries + +
  4. Set of Tcl libraries to implement high-level tools. + It should lead + to complete graphical application with powerful macro language (TCL itself), + access to most of SQL servers (all which have Tcl interface libraries, + including ODBC standard on Win32 platform). + This libraries should include wrappers + for utilities, to hide from user two important things: +
      +
    1. that raster values are always integer numbers rather than text strings +or real numbers and "legend files" are used to map one to another +
    2. that logical map layer is not nessecary stored in separate raster file. +It can share raster with other layer and differ from it only in value +remapping (reclass) table. +
    + This libraries consist of several abstraction layers, which are not properly + documented yet. +
  5. Tcl application which provides graphical user environment. Idea behind + it is that most everyday tasks should be performed by few mouse clicks, +but if you want more you always can open Tcl console and have a full power +of Tcl at your fingertips, including ability to modify GUI. + + +

    Current state

    + +f(GIS) project haven't reach evel alpha stage yet. +I would consider it alpha not sooner than at least 80% of features would +be implemented. But it is already usable for those who own EPPL7 and want portable viewer for their maps +or utilities which overcome some limitations of EPPL7. You can browse +TO DO list. I would be grateful if you would peek +something from it and attempt to implement it. + +

    +There is no snapshots and releases. This page have only historical +interest +

    +Be sure to read installation instructions +before attempt to install fGIS. +

    +Of course, it is not guaranteed even to compile, nevertheless to run, +although it have been used successfully on Linux (GCC 2.7.2), +Solaris-SPARC (GCC 2.7.2) and (utilities only) DOS (Watcom C 10). +It would almost undoubtely fail to compile on 64-bit platform (any +brave soul with Alpha or UltraPenguin to port?). +

    +Current version of visualisation library works with Tcl/Tk 8.0p2. +It should also work with Tcl 7.6p2/Tk 4.2p2. + +Note that dash patch is +almost neccessary, becouse without it Tk would unable +to print (save to postscript) raster maps, produced by f(GIS). + +Img extensioncan also +be helpful, if your raster data are not limited to GIS maps. +Note that +current version of patch, accompaniing this extension, allows to make offsite of raster maps transparent. In future, this would be requirement, but +for now, while fGIS is not fully functional. I don't like to force you to + apply patches which could break your +other Tcl scripts or extensions. + +

    Distribution policy

    +Once f(GIS) would be released, it would be distributed +under GNU Public license. +Pre-alpha versions are freely downloadable, but can be used for evaluation +only unless you are planning to take part in development. If f(GIS) is useful for you even in such limited state, contact me and I would consider marking some parts of project alpha, +thus allowing their redistribution. + + + + diff --git a/geography/fGIS/install.html b/geography/fGIS/install.html new file mode 100644 index 0000000..eeabc61 --- /dev/null +++ b/geography/fGIS/install.html @@ -0,0 +1,66 @@ + + +fGIS installation instruction + + + + +

    fGIS installation instructions

    +Before compiling and installing fGIS you should have working +installation of Tcl/Tk 8.0 +

    +Pre-alpha snapshots of fGIS source tree do not include correct +install target in makefile. +

    +So, you must install it by hand. Source tree is organized such way that +fGIS can be loaded directly from compilation directory. +

    +fGIS library directory should reside somewhere Tcl can find its packages +i.e. as subdirectory of one of directories in tcl_pkgPath. +

    +Directory tree should have following structure: +

    +  fgis
    +    |
    +    +-pkgIndex.tcl
    +    +-fgis.so (fgis.dll)
    +    +-fgis.rc
    +    +-tcl/
    +    |   |
    +    |   +- various scripts
    +    |
    +    +--colors/
    +    |   |
    +    |   +-color palettes (*.clr)
    +    |
    +    +--symbols/
    +        |
    +	+-- symbol files (*.sym)
    +
    +
    + +fGIS initialization code uses some heuristics to find where its support +files are located, but sureest method is to set Tcl variable +fGIS_HOME to the top of fGIS library directory before loading dynamic +library. +

    +your pkgIndex.tcl can look as +

    +package ifneeded Fgis 1.0 {set fGIS_HOME /usr/local/lib/fgis; load /usr/local/lib/fgis/fgis.so}
    +
    +

    +Directory tcl in fgis source tree contain two executable scripts - +mapview and hypermap. They are sample fGIS +applications. In Unix they can be easily moved to any directory in your +PATH - with correctly set up pkgIndex.tcl they'll find support files +anywhere. On windows they should be renamed to mapview.tcl and +hypermap.tcl so they could be started with double click. +

    +More to follow soon.. + + + + + + + diff --git a/geography/fGIS/levels.gif b/geography/fGIS/levels.gif new file mode 100644 index 0000000000000000000000000000000000000000..c4b1bb78f07f0ff8cf9dd32d78d9809d167d6389 GIT binary patch literal 2540 zcmVJz&S&%EQJIsG27<2(AjKhgJx5h&kh3s;L;rUU2NZBh5G-jDzG`aRb7 zuV4>(2OIts_^{#%g%>-P(D*Ql z>-x3c*s{IGy^TA!?%h~SX9nea^l#vxhifuU33+ni!HYNVtXviI>Cm5Rj_wFMBJJC$ zS9k9HGIv_x#S>O}t6kz5;|0M&7X6!!_PIVpt8_!YvGUFS_Hi4S*gpbBLm+(e{imKl z?sQ`j2=p0ZA3O9Yq|HVTSva9a87_2TKNWpvlz;t{v&@JYF*x8k8#V;sJL@UMpEWCL zR1bw3-e^aP{>_Ntf+Re+$9w+pSmTTxs>h>|7;WUukJf46%a95Z^o>b6lDLvTRdxd) zIl?e_qk~Vr#0-#lm}x^bXfmSHiy?vsVw~p1_}H3p*x3f2dD2-YpQQP@n4bBJIhmk? z!YQX`gofrDZ;n0+X{6}Y_5f{+xJl`cn7X%VrfYO+2&kT(XDF$oiX`fpsh$eus+X3E zm8EyO%BobfK67iWiR3B?ue#>pt4zWE>VT}c!dm{7v3U+lY$eQ6^lY<$L<n~%2Af-9`Ibcs6(xm~OEL_4T6gx@7#R*xUaUC^uyhg)hek^fVZIXO4!YQ*? za-}Vc^fF~J-@7tnGw)k-A~*k=^8_G^neomQ3XC$*DjUsm&k>M>%2^{E*~v(&`RfVb=2T|DUI7xdZ}VbVmFDUmjsr>64x>O z93k4&DA{#~Ns7HS;f6C=B-RsKjdmV(|v6(&Qjy>)%~@meaB zIKsW9-C0_HJ&k(X-PprCFQ`&5;)6M$P!_uvc<5dm-(!!B--Gs<=~w+d`&)O8_unG3 zIlun(*SI+7MGYbG3yJq?GB+Cm5N}rUAIBiKF$9*cH!DF9(;ipAi5$>j`_mxuMwY>Y zY!HMGTpL~>n7ee0(10Bj;Rjh5LVT>ygE3U$3u#zFusM)}HN3_QU1%$V2~mhQ1Y&a3 zH6Ij~D@aNl1G%zd!dxJ6KRSHH{uFUA#4HxB6J%IL%}7J*q$ zER-5)@y5Bd(G#KrBO0^!sXIdJj%tddTIRSJKjue^gp?E(K>|ptMDYwUN#q)vxUMnk zu|EYNiX)*|MKTCdORs=r3-PkaBFb<(p;TKY>yVjC4q=j??B5_I=}Ftba*<90f-1QZ zOHRt7lar)GIdvh{?Q^b01iWZ6ktrVW|h0i~V*cT47-Fei{9rm31aO*$TPkIBrY z_5Q=alh_2B*0dc4mB+cn!K`cD>L&cAl_0)3#C#B$6)@kaKpM?%oTR+xI@`Csc`zh} z$%CUmHA%h(V&;0$ELKDQc~MRR@?w_;bte{aSy5~r5~IJgs4t~>P#l8PqaqDeNR2pB zjgl~>)qydm$cAz zE_uIeUeuNsSkfB=Cnngvfi*I`)D7EieYU&zS(j%2ge`iPc3%M7_qGI<=)BG=UbeZU zF5+k{I8VY|+Id7r;^PRF_9oB*O?Q2?U9W-_m%r43IC$uc-H2u9z6=#qz5o620E)c^TXoO*hWE3k|#m|dihgrC_o9j15?%DKy! z%qb06nvV>5)^L7WQ&w4#BX6Oc@t3#Hac|7w+}_b2JidU2*qS%z^UxXE<->JZKle+? zl2F`BNKQ?|TsGbBwDi6Jq6l$A&bHM@38N*Iy?rJI-fh)Bw1EyUKPu08{`7w0|u9l$Xe6)`fWAzcC9*oeU5R| zYn<_`XZg!rPjc0p94MyO-M0dc``mk>-@Na=?|%>c;0u5F#4o<_kB|K1EB`SC002A5 C1OS!* literal 0 HcmV?d00001 diff --git a/geography/fGIS/lib_doc.pdf b/geography/fGIS/lib_doc.pdf new file mode 100755 index 0000000000000000000000000000000000000000..8edcebe5c9e0173bd4b424f6066517592547b980 GIT binary patch literal 274728 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

    qgZ&ebjYoN4GR8rymGU!dV5l0!Z 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Ν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 BbqN3f literal 0 HcmV?d00001 diff --git a/geography/fGIS/man/border.1.html b/geography/fGIS/man/border.1.html new file mode 100644 index 0000000..cace5a6 --- /dev/null +++ b/geography/fGIS/man/border.1.html @@ -0,0 +1,72 @@ + + + + + +BORDER(1) manual page + + +Table of Contents

    + +

    NAME

    +border - plots contour boundaries of raster file into vector file + +

    SYNOPSIS

    +border [-v] [-m] [-l] [-t value ] [-o output_file ] +

    DESCRIPTION +

    +Creates a dgt file with lines which delimit different classes in input +epp file. If -l option given, puts a label point into each closed polygon. +

    +Default output filename is constructed from name of input file, by replacing +suffix .epp by .dgt .

    +Lines can be created "staircase"-like or smooth. Smoothing +is controlled by tolerance factor, which defines maximum size of line +segment, which can be changed.

    + +

    OPTIONS

    + +
    + +
    --help
    +
    Display brief usage information +and exit successifully.
    + +
    --version
    +
    Display version number and exit successifully. +
    + +
    -%, --verbose
    +
    Display progress indication. Useful on large files, but significantly +decreases performans on small ones.
    + +
    -m, --margins
    +
    Controls behavouir on file +edges. By default border treats all areas outside file as offsite, but +when this option given, it assumes that all classes at the file edge are +continued outside it.
    + +
    -t --tolerance
    +
    Defines tolerance value. Default is zero +-- no smoothing.
    + +
    -o --output-file
    +
    Allows to specify output file name explicitly. +
    +
    +

    + +

    BUGS

    +Label creation is unwritten yet

    +

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/clip.1.html b/geography/fGIS/man/clip.1.html new file mode 100644 index 0000000..c4f2bfb --- /dev/null +++ b/geography/fGIS/man/clip.1.html @@ -0,0 +1,76 @@ + + + + + +CLIP(1) manual page + + +Table of Contents

    + +

    NAME

    +clip - clips a region from old file using mask file +

    SYNOPSIS

    +clip + [-%] [-m number] [-o filename] [--help][--version] file mask +

    DESCRIPTION

    +Clip +creates new file, containing part of old file, which corresponds to given +onsite area or specified class of mask file.

    +Cell size of new file would +be equial to cell size of mask file. If cell sizes don't match, ``nearest +neighbour'' algorithm would be used for rescaling.

    + +

    OPTIONS

    + +
    + +
    --help
    +
    displays +brief usage information.
    + +
    --version
    +
    displays version number
    + +
    -%
    +
    Displays percentage +of processed lines in file.
    + +
    -o file --output-file=file
    +
    gives the name for +output file. Defaults to mosaic.out.epp
    + +
    -m number--mask-value=number
    +
    Clip region +which has class number in the mask file. Otherwise all onsite area of mask +file would be clipped.
    +
    + +

    SEE ALSO

    +window(1) +,mosaic(1) +,eheader(1) +

    + +

    AUTHOR +

    +

    + Victor B. Wagner <vitus@agropc.msk.su>

    + +

    BUGS

    +

    + Should deal with different +cell sizes.

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/cluster.1.html b/geography/fGIS/man/cluster.1.html new file mode 100644 index 0000000..0b8dba8 --- /dev/null +++ b/geography/fGIS/man/cluster.1.html @@ -0,0 +1,90 @@ + + + + + +CLUSTER(1) manual page + + +Table of Contents

    + +

    NAME

    +cluster - fills each contour on raster map with its own color +

    SYNOPSIS +

    +cluster [-v] [-f] input_file [-o output_file ] [-c line_color ] [-T temp_dir] + +

    DESCRIPTION

    +Paints each area in epp file, surrounded by color line_color +by unique color from 1 to maximal contour number. Can handle up to 65535 +contours in file.

    +Requires at least three time more space in temporary +directore then input file occupies.

    +By default assumes that line color +is 0 and output file name cluster.out.epp

    +Performs two passes on input file +and between them prints to stdout information about number of contours +in output file and temporary numbers assigned when calculating contours. +So, redirect standard output, if start cluster in background mode. +

    OPTIONS +

    + +
    + +
    -v
    +
    Verbose mode. Information about current line in processing is printed +to stderr.
    + +
    -c line_color
    +
    - Set contour separation color to line_color.
    + +
    -o +output_file
    +
    - overrides default name of output file.
    + +
    -f input_file
    +
    - Equivalent +of simple command-line parameter without option prefix.
    + +
    -? " -h"
    +
    - Print brief +help message and exit successifully.
    + +
    -T directory
    +
    - Uses directory instead +of /tmp for storing temporary files
    +
    +

    + +

    SEE ALSO

    +lessa(1) +, mappaint(1) +, +mapcopy(1) +, eheader(1) +, epp(5) +, dgt(5) +

    + +

    BUGS

    +For some unknown reason +reports very strange errors (usially page faults) or produces very strange +results, when compilied under DOS. So use unix versions.

    +It seems obvouis, +that same program must perform rasterize operation, but this still not +implemented. +

    AUTHOR

    +Vitus Wagner, SoftWeyr.

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/eheader.1.html b/geography/fGIS/man/eheader.1.html new file mode 100644 index 0000000..1a377c4 --- /dev/null +++ b/geography/fGIS/man/eheader.1.html @@ -0,0 +1,209 @@ + + + + + +EHEADER(1) manual page + + +Table of Contents

    + +

    NAME

    +eheader - display and modify headers of EPPL7 data files +

    SYNOPSIS +

    +eheader options files

    +maplist files

    +mapalign base_file [-v] files +

    DESCRIPTION +

    +Applies given editing commands to list of epp or dgt files.

    +Several commands +are applicable to both file types and several to epp (raster) files only. +No warning is issued when dgt file is processed during section when epp-specific +commands used, becouse several epp-files can be processed at same time. +

    +No warning is issued also when no editing commands given, therefore this +utility can be used just for viewing header information.

    +When invoked as +maplist, simply dumps headers of given files.

    +when invoked as mapalign +performs same operations as with -A key, but only other option accepted +is -v. This option may be given as before, as after base file.

    +

    + +

    UNIVERSAL +OPTIONS

    +This commands can be applied to both dgt (vector) and epp (raster) +files. +
    + +
    -v
    +
    - dumps file header information after applying any edit options +to stdout.
    +
    +

    + +

    + +
    -x increment
    +
    - shifts alternative x by increment. Increment +can be any real number, both positive and negative.
    + +
    -y increment
    +
    - same +with alternative y
    + +
    -s factor
    +
    - multiplies all coordinates by factor
    +
    +

    +This +commands cannot be used together with explicit settings of some alternative +coordinate limit. +

    + +
    -Xl value or -XL value
    +
    - sets alternative x of left border +to specified value
    + +
    -Xr value or -XR value
    +
    - same with right border
    + +
    -Yb value +or -YB value,-Yt value or -YT
    +
    - same with bottom and top y
    + +
    -p name
    +
    - set +projection type to name. Available projection types ( EPPL7 version 3.0 +) are:
    + +
    none
    +
    - cause EPPL ver 3 to say "No alternate coordinates"
    + +
    utm +or UTM
    +
    - UTM projection
    + +
    stplate
    +
    - state plane (projection for US state +maps)
    + +
    ll
    +
    - latitude and longitude (geographic coordinates)
    +
    + + +

    EPP SPECIFIC +COMMANDS

    +Following is applicable to EPP files only: +
    + +
    -o n
    +
    - set offsite +value to n. Value can be in range -32768 65535. Negative values are equivalent +to 65536-abs(n). Values above 255, applied to 8-bit data files are silently +translated into -1 (no offsite)
    + +
    -fr n
    +
    - set first row to n and updates +last row field respectively.
    + +
    -fc n
    +
    - set first column to n and updates +last column field.
    + +
    -A filename
    +
    - align to specified file, i.e updates row/column +coordinates so row and column with same number have same alternative coordinates. +
    + +
    -a value
    +
    - set cell area to value.
    + +
    -c "string"
    +
    - fills description field +of the header. String must be single command line argument, but not nessecary +need quotes.
    + +
    -u name
    +
    - set area unit type, where unit type may be:
    + +
    none +
    +
    - cause EPPL ver 3 to say "No alternate coordinates"
    + +
    ft
    +
    - square feet +
    + +
    m
    +
    - square meters
    + +
    km
    +
    - square kilometers
    + +
    mile - square miles
    +
    + +
    ha
    +
    - hectares +
    + +
    acre
    +
    - acres
    +
    +

    +This command does not perform any recalculation, it just +update unit name field. Use -a command for change cell area value respectively. + + +

    OPTION COMPATIBILYTY

    +Some options of eheader cannot coexist together +in same command line. there are two groups of options with incompatibilities +between subgroup of each group.

    + First, options dealing with alternative +coordinates. There are options -Xl -Xr -Yt -Yb, which set alternative coordinates +explicitely, and options -x -y -s, which change coordinates by arithmetic +calculations. Explicit and arithmetic changes of coordinates are not allowed +simulateneously, becouse it is to hard to understand, which kind user +want to apply first.

    + Second, options dealing with row/column coordinates +of epp files. Here there are options -A and -fr -fc which performs directly +opposite task. (usially -fr -lr are used to set first row and column to +one, to process file cutted from large file separately and -A to change +it back to mosaic(1) + file into larger one.

    + +

    SEE ALSO

    +lessa(1) +, mappaint(1) +, +mapcopy(1) + epp(5) +, dgt(5) + +

    BUGS

    +No check is performed by -fr and -lr command +to ensure that row/column values are in valid range.

    +-A command sometimes +miscalculates one cell. (but EPPL ver 2.1 does the same). +

    AUTHOR

    +Vitus Wagner, +SoftWeyr.

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/extents.1.html b/geography/fGIS/man/extents.1.html new file mode 100644 index 0000000..3695de3 --- /dev/null +++ b/geography/fGIS/man/extents.1.html @@ -0,0 +1,104 @@ + + + + + +EXTENTS(1) manual page + + +Table of Contents

    + +

    NAME

    +extents - displays information about class extents in given EPP file. + +

    SYNOPSIS

    +extents [-%ahlrtbxtA] [-o file] file.epp +

    DESCRIPTION

    +

    + Extents +calculates area extents of all classes in given file and displays it in +tabular form.

    + This information includes minimal and maximal coordinates +and area of class.

    +By default information is printed to stdout.

    + It may +be given in row/column and alternative coordinates. +

    OPTIONS

    + +
    + +
    --help
    +
    displays +brief usage information.
    + +
    --version
    +
    displays version number
    + +
    -% --verbose
    +
    Displays +percentage of processed lines in file.
    + +
    -o file --output-file=file
    +
    gives the +name for output file, to write results to, instead of standard output. +
    + +
    -a --alt-coords
    +
    display coordinates in alternative system and area in real +units, insted of row/col and cell count.
    + +
    -h --header
    +
    display one-line header +above table.
    + +
    -l --sort-left
    +
    sort classes by leftmost coordinate
    + +
    -r --sort-right +
    +
    sort classes by rightmost coordinate
    + +
    -t --sort-top
    +
    same for topmost coordinate +
    + +
    -b --sort-bottom
    +
    I'm tired with this sort orders
    + +
    -A --sort-area
    +
    Sort classes +by count of cells.
    + +
    -x --sort-x-center
    +
    Sort by x-coordinate of center of rectangle, +containing all cells of that class. -y --sort-y-center same, but by y-coordinate +
    +
    +

    + +

    SEE ALSO

    +outtable(1) +

    + +

    AUTHOR

    +

    + Victor B. Wagner <vitus@agropc.msk.su>

    + +

    BUGS +

    +

    + ???

    +

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/fgisRasterColorImage.n.html b/geography/fGIS/man/fgisRasterColorImage.n.html new file mode 100644 index 0000000..32d0167 --- /dev/null +++ b/geography/fGIS/man/fgisRasterColorImage.n.html @@ -0,0 +1,144 @@ + + + + + +palette(n) manual page + + +Table of Contents

    +

    + +

    NAME

    +fgisRasterColorImage, fgisRasterBWImage - render raster object into +planchet item

    + +

    SYNOPSIS

    +fgisRasterColorImage raster planchet item ?option +?

    + fgisRasterBWImage raster planchet item ?option ?

    + +

    DESCRIPTION

    +

    + These +commands perform visualisation of fGIS raster objects in fGIS planchet +(essentially same as Tk canvas). They work on platform independent manner, +creating visible representation of layer in Tk image object, which should +be previously created.

    + User (and even application writer) seldom accesses +this commands directly. Raser layer objects and planchet subcommands should +be used to visualize raster layers.

    + These commands controls all attributes +of layer appearance, which have no semantic meaning. I.e. raster file class +to palette index correspondence is part of raster object, becouse it also +used for access legend and GIS operation, while palette itself appear +only in call to this command, becouse it used only to visualisation.

    + + +

    ARGUMENTS

    +

    + +

    + +
    raster -
    +
    name of fGIS raster object (see raster (n) +).
    +
    +

    + +

    + +
    planchet + -
    +
    name of fGIS planchet widget. Planchet should be mapped and have coordinate +system already defined.
    +
    +

    + +

    + +
    item -
    +
    ID of planchet item to render raster in. +It should exist, be of type image and contain valid image (photo for fgisRasterColorImage + and bitmap for fgisRasterBWImage ) in its -image atribute.
    +
    +

    + +

    OPTIONS

    + +
    + +
    -border +option -
    +
    specifies whether borders between raster object classes or base +file classes (polygon borders) should be drawn. Option can be one of none +, yes , base . Abbreviations are not allowed (bug?). yes means that borders +are drawn only between distinct classes of current raster object, base + means that borders should be drawn if base file classes are distinct, +even if they are reclassed into same value. Useful for choropleth plots. +
    +
    +

    + For symbol plots option is ignored. Defaults to none for color images +and yes for BW images. +

    + +
    -color color
    +
    - specifies color to plot borders +in color mode or for entire image in pattern or symbol mode. color can +be any form of color specification, acceptable by Tk. Defaults to "black". +
    + +
    -map option -
    +
    specifies how to deal with map classes, which exceed palette +or pattern range (0-255). Option is one of wrap - use symbol (color) class%255 + for classes which exceeds 255, none - use symbol (color) 255 for all +these clases and number - map range 0-max class to range 0-number . Defaults +to wrap .
    + +
    -palette palettename (color only) -
    +
    specifies fGIS palette object +to use for coloring of map classes. Defaults to defaultpalette .
    + +
    -patterns +patternname (BW only) -
    +
    sets plotting mode to pattern and specifies pattern +set to plot. In pattern mode patterns are clipped by polygon boundaries, +and thus any border modes are allowed. Defaults to {} (empty pattern). This +mode is default for fgisRasterBWImage
    + +
    -symbols patternname (BW only) +-
    +
    sets plotting mode to symbol and specifies pattern set to plot. In symbol +mode patterns can be drawn only at whole, so if central point of pattern +belongs to certain class, pattern for this class would be drawn on entire +rectangle. Borders are never plotted in this mode No defaults, becouse +this mode must be turned on explicitely.
    + +
    -update {x1 y1 x2 y2}
    +
    - Specifies, +that only part of image should be replotted. Useful for raster editing +application. Rectangle to update is given in map coordinates. It is clipped +by image boundaries.
    +
    +

    + +

    SEE ALSO

    +raster(n) +,planchet(n) +,palette(n) +, patterns(n) + +

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/legend.n.html b/geography/fGIS/man/legend.n.html new file mode 100644 index 0000000..1720471 --- /dev/null +++ b/geography/fGIS/man/legend.n.html @@ -0,0 +1,134 @@ + + + + + +legend(n) manual page + + +Table of Contents

    + +

    NAME

    +legend - Create and manipulate EPTcl legends

    + +

    SYNOPSIS

    +legend read +filename options

    + legend parse string

    + legend set list

    + +

    DESCRIPTION +

    +

    + legend creates legend object, which is used to store and manipulate +descriptive information about maps. There are three ways to create legend: + +

    + +
    from file, which shoild be an EPPL7 legend file
    +
    + +
    from string, which should +hold content of such file
    +
    + +
    from Tcl list, simular to one, used for array +set command
    +
    +
    +

    +legend command returns handle for legend which is unique +identifier, used for subsequent references for this legend. It creates +new Tcl command with name of this identifier, that used to manipulate +legend.

    +Actually, legend object is combination of global array and Tcl +procedure, and legend handle is simply name of both of them.

    + +

    OPTIONS +

    + +
    + +
    legend read filename
    +
    Opens and reads text file in EPPL7 format. Each +line of this file contain number and descriptive text, separated by two +spaces (originally, there should be some information concering printing +map on line printer (not graphical one) between this spaces, but this +format is no longer used and supported. Numbers between 0 and 65535 are +considered map classes and numbers -2 and -1 have special meaning - they +are considered legend title and subtitle respecitvely. There can be several +lines with same classes in legend. They are concatenated. Note that EPTcl +never uses this line separations as line breaks when outputting legend +(may be this should go to BUGS section)
    + +
    legend parse string
    +
    Produces +legend from string which should be identical to content of EPPL7 legend +file.
    + +
    legend set list
    +
    Produces legend from Tcl list. Such list can be +obtained by array get legendname command. Differ from array set in that +finds correct name for legend and defines object command for it. Can be +used to create empty legend for subsequentual filling by legendname set + subcommand. In this case empty list should be specified.
    +
    +

    + +

    OBJECT COMMAND +

    + +
    + +
    legendName classes
    +
    Return sorted list of classes defined in legend
    + +
    legendName +delete
    +
    Destructor of object. Unsets all data and destroys object command. +
    + +
    legendName drawable ?boolean?
    +
    if boolean specified, set legend drawmode +and return nothing. Otherwise returns 0 or 1, depending of current settings. +Drawmode controls if legend could be displayed in legend box.
    + +
    legendName +get class
    +
    Returns value of given class or string "Not defined",such +class is not defined. String could be changed by changing value of element +udefined_legend of global array fgis
    + +
    legendName print
    +
    Returns content +of legend in form of EPPL7 legend format as string.
    + +
    legendName set class +value
    +
    Changes description of given class
    + +
    legendName subtitle ?string +?
    +
    If no string specified, returns current legend subtitle. Otherwise +replaces subtitle by given string
    + +
    legendName title ?string ?
    +
    If no string + specified, returns current legend title. Otherwise replaces title by given +string
    +
    + +

    BUGS

    +None noticed

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/mosaic.1.html b/geography/fGIS/man/mosaic.1.html new file mode 100644 index 0000000..3f33a61 --- /dev/null +++ b/geography/fGIS/man/mosaic.1.html @@ -0,0 +1,94 @@ + + + + + +MOSAIC(1) manual page + + +Table of Contents

    + +

    NAME

    +mosaic - merges several epp files together +

    SYNOPSIS

    +mosaic [-%RA] +[-O number] [-o filename] [--help][--version]files +

    DESCRIPTION

    +Mosaic merges +several epp-files into one. If some cell has non-offsite value in several +files, value from last files would be used.

    +Cell sizes of all old files +must be equial. Usially mosaic deals with properly aligned files, but +it can deal with misaligned files, taking into account row/column or alternative +coordinates regarding to command-line options.

    +If offsite value is not +explicitely given in command line, it defaults to offsite of first (base) +file if it is not used as data class in one of overlay files. In last case +offsite would be set to 255 for 8-bit and to 65535 to 16-bit files. +

    OPTIONS +

    +

    + +

    OPTIONS

    + +
    + +
    --help
    +
    displays brief usage information.
    + +
    --version
    +
    displays version +number
    + +
    -%
    +
    Displays percentage of processed lines in file.
    + +
    -o file --output-file=file +
    +
    gives the name for output file. Defaults to mosaic.out.epp
    + +
    -A --force-alt
    +
    Do +not complain, if files are misaligned. Use alternate coordinates to reference +them.
    + +
    -R --force-row
    +
    Same, but use row/col cordinates.
    +
    +

    + +

    + +
    -O value --offsite=value +
    +
    specifies offsite value of new file.
    +
    +

    + +

    SEE ALSO

    +eheader(1) +,window(1) +

    + + +

    AUTHOR

    +

    + Victor B. Wagner <vitus@agropc.msk.su>

    + +

    BUGS

    +

    + ???

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/neighbours.1.html b/geography/fGIS/man/neighbours.1.html new file mode 100644 index 0000000..debc57d --- /dev/null +++ b/geography/fGIS/man/neighbours.1.html @@ -0,0 +1,75 @@ + + + + + +NEIGHBOURS(1) manual page + + +Table of Contents

    + +

    NAME

    +neighbours - prints list of neighbouring clasees in epp-file +

    SYNOPSIS +

    +neighbours [-%][-d] file +

    DESCRIPTION

    +This command searches epp-file for +all class boundaries and print a table of class pair which are neighbouring +at least in one place. DO NOT MIX it with EPPL7 NEIGHBOUR command, which +is part of evaluate(1) + in EPU.

    + It prints pairs of classes to stdout, one +per line separated by commas.

    + Each pair of classes can be printed once +or twice, first among neighbours of first class in pair, than neighbours +of second.

    + +

    OPTIONS

    + +
    + +
    --help
    +
    displays brief usage information.
    + +
    --version
    +
    displays +version number
    + +
    --verbose -%
    +
    Displays percentage of processed lines in file. +
    + +
    -d --double
    +
    print each pair twice.
    +
    +

    + +

    SEE ALSO

    +outtable(1) +,mapcolor(1) +,evaluate(1) +,extents(1) +. +

    + +

    AUTHOR

    +

    + Victor B. Wagner <vitus@agropc.msk.su>

    + +

    BUGS

    +

    + ???

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/outtable.1.html b/geography/fGIS/man/outtable.1.html new file mode 100644 index 0000000..a9c327d --- /dev/null +++ b/geography/fGIS/man/outtable.1.html @@ -0,0 +1,192 @@ + + + + + +OUTTABLE(1) manual page + + +Table of Contents

    + +

    NAME

    +outtable - computes table of statistics from several epp files. +

    SYNOPSIS +

    +outtable [options] [function] file [ [function] file ...]

    + +

    DESCRIPTION +

    +outtable takes several epp-files counts all possible combinations of +classes in them and produces table of them.

    +Some files can be preceded +by function Such files wouldn't be used to define new combination. Instead, +corresponding column of table would contain value of function, computed +from this file for area, defined by combination of classes of all "function-less" +files.

    +All files, used to define combination, should be specified before +first file with function.

    +If no function defined, table would be appended +by column, containing area of each combination.

    +If all files have function, +table would contain only one row, containing values of the functions for +all area.

    +If files have different cell size and limits, limits and coordinate +systems of the first file are used, unless overriden by --base option. +

    +By default, semantic value of classes are considered equial to values +of classes. This can be overridden by specifying parameters of linear mapping +function using

    + -z and -Z options. This option can be specified only once +per invocation, becouse usially outtable is used to calculate statistics +for one file in combinations, given by several other files.

    +By default, +all area-related values are calculated in alternative coordinate units. +It can be overriden using -c option. +

    OPTIONS

    + +
    + +
    --help
    +
    displays brief usage +information.
    + +
    --version
    +
    displays version number
    + +
    --verbose -%
    +
    Displays percentage +of processed lines in file.
    + +
    -u --union
    +
    Take into account all cells, where +at least one of output files is not offsite. By default, only cells where +all input files are onsite are taken into account.
    + +
    -c --cells
    +
    Output areas +in cells. By default map units as specified in file header are used to +compute areas.
    + +
    -dchar --delimiter=char
    +
    sets table column separator to char. +Defaults to comma.
    + +
    -b file--base file
    +
    Specifies epp file, used as reference +grid. Cell area and cell size of this file, as well as its coordinate limits +would be used for processing. Defaults to first file in the command line. +
    + +
    -z value
    +
    Specifies multiplier for calculating semantic value from class +value.
    + +
    -Z value
    +
    Specifies offset of semantic values, i.e. semantic value +of class 0.
    +
    + +

    FUNCTIONS

    + +
    + +
    -sum
    +
    Sum of classes in given file for combination, +multiplied by cell area.
    + +
    -cnt
    +
    Count of onsite cells of given file.
    + +
    -avg +
    +
    Average cell value
    + +
    -min
    +
    Minimum cell value
    + +
    -nmin
    +
    Area of cells with minimum +value
    +
    +

    + +

    + +
    -max
    +
    Maximum cell value
    + +
    -nmax
    +
    Area of cells with maximum value +
    + +
    -mode
    +
    Modal value (value of most cells)
    + +
    -nmode
    +
    Area of cells with modal +value
    + +
    -fewest
    +
    Class with fewest cells
    + +
    -nfewest
    +
    Area of cells in fewest +class
    + +
    -range
    +
    Range of classes (maximum-minimum)
    + +
    -classes
    +
    Number of different +classes
    + +
    -or
    +
    Bitwise or of all cells (values of -z and -Z options are not +used)
    + +
    -and
    +
    Bitwise and of all cells (values of -z and -Z options are not +used)
    + +
    -std
    +
    Standard deviation of classes
    + +
    -var
    +
    Variance of classes
    + +
    -corr +
    +
    Correlation coefficient between two files. Requires two arguments.
    +
    + +

    SEE +ALSO

    +intable(1) +,reclass(1) +,evaluate(1) +,resample(1) +,eheader(1) +

    + +

    AUTHOR +

    +

    + Victor B. Wagner <vitus@agropc.msk.su>

    + +

    BUGS

    +

    + ???

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/palette.n.html b/geography/fGIS/man/palette.n.html new file mode 100644 index 0000000..6a81f42 --- /dev/null +++ b/geography/fGIS/man/palette.n.html @@ -0,0 +1,110 @@ + + + + + +palette(n) manual page + + +Table of Contents

    +

    + +

    NAME

    +palette - Create and manipulate color palettes

    + +

    SYNOPSIS

    + palette +option ?arg ?

    + +

    DESCRIPTION

    +

    +This command creates palette object, which +is used for map visualisation. Palette is array of 256 RGB color specifications, +indexed by integers from 0 to 255. Typically palette entry N is used for +displaying map class N. Upon creation of object new Tcl command with same +name as object is defined and can be used for manipulating palette. palette + command returns name of created object. One palette, named defaultpalette + is created during initialization of fGIS. In difference of user-created +palettes it cannot be modified.

    + +

    OPTIONS

    + +
    + +
    palette read filename
    +
    - reads +palette from specified file. File should confirm EPPL7 clr file syntax. +
    + +
    palette parse string
    +
    - reads palette from string. String should have same +format as EPPL7 clr file.
    + +
    palette set list
    +
    - creates palette from list +of color specification. Each element of list should have format #rrggbb. +Color names are not supported by palettes. Color specifications are assigned +to palette indices in sequentual order.
    + +
    palette blank
    +
    - creates new palette +with all entries set to white (#ffffff).
    +
    +

    + +

    + +
    palette copy paletteName
    +
    - creates +a copy of existing palette. This allows to create modifable copy of default +palette.
    +
    + +

    OBJECT COMMAND

    +Palette object names can be used as command names. +They support folowing options: +
    + +
    paletteName delete -
    +
    destroys palette +object.
    + +
    paletteName get index
    +
    - return color for given index in palette. +Color is returned as #rrggbb, and can be used as color specification in +Tk commands.
    + +
    paletteName list
    +
    - return list of all colors in palette. This +list always contains 256 elements. This list can be used as argument for +palette set command, to create same palette.
    + +
    paletteName print
    +
    - returns +string, containing content of valid EPPL7 clr file, which can be used +to reproduce this palette.
    + +
    paletteName set index value
    +
    - changes contents +of given entry to value . Value should be in form #rrggbb. Other forms of +colors, supported by Tk are not supported by palettes.
    +
    + +

    SEE ALSO

    +patterns(n) +,fgisRasterColorImage(n) +. +

    +

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/planchet.n.html b/geography/fGIS/man/planchet.n.html new file mode 100644 index 0000000..542b3d5 --- /dev/null +++ b/geography/fGIS/man/planchet.n.html @@ -0,0 +1,617 @@ + + + + + +planchet(n) manual page + + +Table of Contents

    +
    +
    + +

    NAME

    +planchet - Create and manipulate planchet widgets +

    SYNOPSIS +

    +planchet pathName ?options ? +

    STANDARD OPTIONS

    +

    +

    + -background    -insertwidth    -state +
    + -insertbackground    -relief    -tile
    + -cursor    -insertborderwidth    -selectbackground    -takefocus +
    + -highlightbackground    -insertofftime    -selectborderwidth    -xscrollcommand
    + -highlightcolor    -insertontime    -selectforeground    -yscrollcommand +
    +

    +See the options manual entry for details on the standard options.

    +Note: + Standard optiosn -highlightthickness and -bordewidth are ignored by planchet, +and set to 0. Therefore -relief options have no effect. +

    WIDGET-SPECIFIC +OPTIONS

    +

    +

    +Command-Line Name:    -coordformat
    + Database Name:    coordFormat
    + Database +Class:    CoordFormat
    + +

    + +
    Specifies format string to display current map coordinates, +if no projection
    +
    defined. Defaults to "X=%0.8g Y=%0.8g"
    +
    +

    +

    +Command-Line Name:    -orient +
    + Database Name:    orient
    + Database Class:    Orient
    + +

    + +
    Specifies printing orientation +for this planchet. May be either portrait
    +
    or landscape. Defaults to landscape +
    +
    +

    +

    +Command-Line Name:    -lookwidth
    + Database Name:    lookWidth
    + Database Class:    LookWidth +
    + +

    + +
    Wraplength of text in popup look window. Defaults to 200.
    +
    +
    +

    +

    +Command-Line +Name:    -shiftfactor
    + Database Name:    shiftFactor
    + Database Class:    ShiftFactor +
    + +

    + +
    Specifies share of window size to move on shift widget command.
    +
    Defaults +to 0.75
    +
    +

    +

    +Command-Line Name:    -resizable
    + Database Name:    resizable
    + Database +Class:    Resizable
    + +

    + +
    Specifies a boolean value that indicates whether or +not should planchet
    +
    adjust its width/height ratio, when coordinate limits +are first defined.
    +
    +

    +

    +Command-Line Name:    -rulerpos
    + Database Name:    rulerPos +
    + Database Class:    RulerPos
    + +

    + +
    Indicates position of scale ruler in planchet. +(its left end). Should be
    +
    list of two coordinates in any form, acceptable +by Tk. Positive values are measured from top and left and negative from +lower and right side of planchet
    +
    +

    +

    +Command-Line Name:    -scalevar
    + Database +Name:    scaleVar
    + Database Class:    Variable
    + +

    + +
    Specifies the name of variable. +Current scale of map would be stored in
    +
    this variable automatically upon +each change of scale in form 1:denominator. If variable doesn't exist in +global scope, it would be created.
    +
    +

    +

    +Command-Line Name:    -statusline
    + Database +Name:    statusLine
    + Database Class:    none
    + +

    + +
    Specifies name of label widget +which would be used for displaying status
    +
    information of planchet (i.e. +current mouse pointer coordinates). Widget should exist before creating +planchet or before passing it to planchet configure command.
    +
    +

    +

    +Command-Line +Name:    -legbox
    + Database Name:    legBox
    + Database Class:    none
    + +

    + +
    Specifies +name of canvas widget which would display scrollable legend of
    +
    base +layer. Note, that scrollable legend is not printed automatically by print +command. All contents of this widget would be erased each time base layer +changed in planchet.
    +
    +

    +

    +Command-Line Name:    -zoombutton
    + Database Name:    zoomButton +
    + Database Class:    none
    + +

    + +
    Specifies name of button, which is used to initiate +zoom operation on
    +
    canvas. (usially via zoom ) widget command. Planchet +controls its state, disabling it, if coordinate system is not defined. +It should exist before it passed to planchet.
    +
    +

    +

    +Command-Line Name:    -unzoombuttons +
    + Database Name:    unzoomButtons
    + Database Class:    none
    + +

    + +
    Specifies list +of buttons, which are used to perform various unzoom operations
    +
    (like +unzoom or limits default widget commands). Planchet controls their state, +disabling them if such operations are impossible.
    +
    +

    +

    +Command-Line Name:    -shiftbuttons +
    + Database Name:    shiftButtons
    + Database Class:    none
    + +

    + +
    Specifies list of +four buttons for perform shift operation on planchet.
    +
    Buttons are specified +in following order left(west) down(south) up(north) + and right(west), +the same way as vi cursor movement keys are situated on keyboard.
    +
    +

    +

    +Command-Line +Name:    -zoombutton
    + Database Name:    zoomButton
    + Database Class:    none
    + +

    + +
    Specifies +name of button, which is used to initiate zoom operation on
    +
    canvas. (usially +via zoom ) widget command. Planchet controls its state, disabling it, if +coordinate system is not defined. It should exist before it passed to planchet. +
    +
    +

    +

    +Command-Line Name:    -unzoombuttons
    + Database Name:    unzoomButtons
    + Database +Class:    none
    + +

    + +
    Specifies list of buttons, which are used to perform various +unzoom operations
    +
    (like unzoom or limits default widget commands). Planchet +controls their state, disabling them if such operations are impossible. +
    +
    +

    +

    +Command-Line Name:    -shiftbuttons
    + Database Name:    shiftButtons
    + Database +Class:    none
    + +

    + +
    Specifies list of four buttons for perform shift operation +on planchet.
    +
    Buttons are specified in following order left(west) down(south) +up(north) + and right(west), the same way as vi cursor movement keys are +situated on keyboard. This buttons should be either all be specified or +all be empty, in which case list of four empty elements should be passed. +Planchet not only controls state of buttons, but also redefines their +commands.
    +
    +

    +

    +Command-Line Name:    -projection
    + Database Name:    projection
    + Database +Class:    none
    + +

    + +
    Specifies Fgis projection object which is used to convert +chartographic
    +
    coordinates of planchet into geographic (latitude and +longitude) and vice versa.
    +
    +

    +

    +In addition to these all options of canvas + widget are supported. +

    INTRODUCTION

    +

    +The planchet command creates a new +window (given by the pathName argument and makes it into planchet widget. +

    + Additional options, described above, can be given to control its behavoir. +Currently they could be specified only in command line, not in option +database, but it shoudl change in future.

    + planchet command returns its +pathName argument. At the time this command is invoked, there must not +exist a window, named pathName , but pathName 's parent must exist. planchet + command also creates new Tcl command named pathName which can be used +to control widget.

    +

    + Planchet widget have all behavoir supported by Tk +canvas widget, but, in addition it could have chartographic coordinate +system and able to visualize and manipulate maps.

    + +

    COORDINATE SYSTEM

    +

    + +Planchet coordinate system is real-world coordinate system. Its coordinates +should be in meters of earth surface, not in pixels, millimeters or other +map sheet or screen-related units. It can be defined either explicitely +via limits widget command, or implicitely, when first map is shown in +planchet.

    + There are special commands which allow to recalculate from map +(realword) coordinates to screen coordinates. Screen coordinate system +of planchet is same as of canvas. +

    LAYERS

    +Planchet can visualize maps, +which are represented as Fgis layer objects. There are two ways of display +layer - as base layer or as ovelay.

    +Base layers are opaque, they are typically +raster layers, shown by colors. There can be only one base layer in plachet +in given time. If legbox helper widget is defined, and legend for base +layer is drawable, it would be displayed in this widget. Several layer +types couldn't be displayed as base layers.

    +

    +Overlay layers are transparent, +although visible. There can be several overlay layers in planchet at given +time. Any layer can be displayed as overlay.

    +When first layer is displayed +in planchet, with undefined coordinate system, coordinate system limits +for planchet are got from limits of layer. If layer cannot provide this +information, it causes an error.

    + +

    HELPER WIDGETS

    +

    + Planchet can be accompanied +with several other widgets, which are used to interact with user. If this +widgets are passed to planchet via commandline options (or via widget +configure ) command, it can control them automatically and disable them, +if corresponding action is impossible. See OPTIONS ABOVE .

    + +

    SCALE INDICATION +

    +

    + There are two traditional ways of scale indication - numerical and graphical. +As numerical indication, -scalevar option of planchet widget allows to +specfy Tcl global variable, which would always hold current value of map +scale.

    +As graphical representation of scale, planchet can display scale +ruler which shows how some realword distance is visible in planchet.

    + + +

    LOOK FEATURE

    +

    + Planchet allows to collect information from several layers +in given point. By default it pops up window with this information on right +button click. Set of layers which included in this information is called +look list .

    + +

    WIDGET COMMAND

    +

    +

    + The planchet command creates a new Tcl command +whose name is pathName . This command can be used to invoke various operaitons +on the widget. It has following general form:

    + pathName option ?arg arg +.. ?
    +

    + Option and the arg s determine the exact behavior of the command. +Planchet supports all widget commands, defined for canvas widget and +following special commands, specific to planchet: +
    + +
    pathName clear
    +
    Removes +all layers from planchet, and from look list and unsets coordinate system +
    + +
    pathName cget option
    +
    Returns value of specified configuration option. +In addition to standard options and widget specific options, supports +all options of canvas widget. Several internal variables can also be obtained +this way, but it is dirty and undocumented hack.
    + +
    pathName configure option +arg ?option arg ...?
    +
    Allows to change value of one or more options.
    + +
    pathName +fit x y
    +
    Returns 1 if point, given in real world coordinates is inside +current planchet limits, and 0 otherwise.
    + +
    pathName hide pattern ?pattern...? +
    +
    Removes all layers which matches pattern from planchet.
    + +
    pathName layers + ?pattern ?
    +
    Return list of all visible layers, either base or overlays, +which match given pattern. By default - all layers.
    + +
    pathName limits
    +
    Used +to control limits of realword coordinate system. Can have one of following +form
    + +
    limits
    +
    Without any arguments return list of four double values, +representing real world coordinates of window sides. They are given in +folowing order:

    + XLeft YBottom XRight YTop
    +

    +
    + + +
    + +
    limits list
    +
    + +
    limits xleft +ybottom xright ytop
    +
    Given list of four double values or four double +values as separate arguments, sets planchet limits for this value. If -resizable + option is true and no coordinate system was defined before, adjusts width/height +ratio of planchet to reflect this ratio of given limits. Otherwise expands +given limits to have same width/height ratio as widget.
    +
    +

    + If directions +of axes of given limits doesn't match those of currently defined coordinate +system, silently reverts them. Therefore order of coordinates in insignificant, +once coordinate system is defined.

    + If coordinate system was defined, assumes +that zooming operation is performed and stores old limits in zoom stack +for subsequent unzoom operation. If scale of given limits is smaller, then +of some limits in zoom stack, discards all elements with scale larger +than given for unzoom operation shouldn't increase scale. Nevertheless initial +limits are never discarded this way. +

    + +
    limits default
    +
    Clears zoom stack +and restores coordinate limits to their initial values.
    +
    + + +
    + +
    pathName look +
    +
    Controls LOOK FEATURE of planchet. Can have one of following forms +
    + +
    look add layer
    +
    adds layer to look list.
    + +
    look list ?pattern ?
    +
    Returns +list of layers in look list, which match pattern. By default all layers +
    + +
    look remove pattern
    +
    removes layers which match pattern from look list +
    + +
    look remove all
    +
    clears look list entirely
    + +
    look x y ?-titled|-list|-raw ? +
    +
    return list of information for all layers in look list at given point. +If -titled option is specified, each element in list is formatted string. +Otherwise it is two element list which first element - layer title, and +second - layer value. -raw option returns only values, without layer title +information.
    +
    +

    + Length of this list not neccesary matches length of look +list, becouse if some layers are undefined in given point, they do not +create list element. + +

    + +
    pathName mapx x
    +
    + +
    pathName mapy
    +
    Given screen coordinate +in any form, acceptable by Tk, returns realword coordinate.
    + +
    pathName print + ?option arg ...?
    +
    Wrapper around postscript command. Uses default Fgis font +mapping and print system, also widget default orientation. By default, +send output to default Fgis printer using command, defined in fgis configuration +file.
    +
    +

    + Following options are supported:

    -colormode mode Same as colormode + option in canvas postscript command. +
    + +
    -file filename
    +
    Write postscript +representation of planchet into given file, instead of piping it to print +command.
    + +
    -fontmap variable
    +
    array used to map screen fonts to postscript +fonts. See canvas postscript command for more information.
    + +
    -printer printername +
    +
    Overrides default printer, specified in fgis.rc file.
    +
    +
    + +
    + +
    pathName ruler +?on|off?
    +
    Controls scale ruler.
    + +
    pathName scale ?denominator ?
    +
    With no +arguments returns current scale denominator. If denominator is given, +adjust coordinate limits so that scale would be as specified and center +point of widget would have same realworld coordinates as before.
    +
    +

    + If any +other arguments are specified, behaves as canvas widget scale command. +

    + +

    + +
    pathName scrx x
    +
    + +
    pathName scry y
    +
    Given realworld coordinate, returns +screen coordinate in pixels.
    + +
    pathName setstatus
    +
    Displays message if -statusline + helper widget, if defined, otherwise does nothing. Can have one of two +form:
    + +
    setstatus message
    +
    displays message as specified
    + +
    setstatus x y +
    +
    Displays given coordinates. If no projection defined, they would be displayed +using Tcl format command with value of -coordformat option as first argument. +Otherwise they would be displayed using format object command of current +projection.
    +
    + + +
    + +
    pathName shift direction
    +
    Changes current coordinate limits +so that current view shifts in specified direction by share of corresponding +widget size, specified by -shiftfactor option.
    + +
    pathName show layer ?-base +|-overlay ?
    +
    Displays specified layer. If neither -base nor -overlay is specifed, +shows layer as base if no base layer currently present and layer can be +displayed as base. Otherwise displays it as overlay.
    + +
    pathName unzoom
    +
    Pops +last coordinate limits from zoom stack
    + +
    pathName zoom ? x y ? x y ?? +
    +
    Initiates interactive zoom operation. If no coordinates are specified, +prompts user to pick both corners of rectangle to display. If one pair +is specified, prompts only for second pair. With two pairs just converts +values from canvas to realworld coordinates and performs limits command +on them.

    + pathName zoom cancel
    +

    +
    + + can be used to abort interactive zoom +operation currently in progress.

    + pathName zoom cancel
    +

    + can be used +to abort interactive zoom operation currently in progress. +

    SEE ALSO

    +layer(n) + + +

    BUGS

    +No care taken to do something useful if interactive zoom operation +is performed on two planchets simulateously.

    +

    +

    +

    +

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/projection.n.html b/geography/fGIS/man/projection.n.html new file mode 100644 index 0000000..a93bb9a --- /dev/null +++ b/geography/fGIS/man/projection.n.html @@ -0,0 +1,147 @@ + + + + + +projection(n) manual page + + +Table of Contents

    +.SH NAME
    + +projection \- Create and manipulate projection objects +

    +.SH SYNOPSIS
    + +\fB projection \fItype\fR ?\fIparameters\fR?
    + +.PP +

    +.SH DESCRIPTION
    + +.PP + +

    This command creates projection object, used to recalculate geographic

    + +

    +coordinates (latitude and longitude) into map projection coodrinates. +.PP
    + +\fBprojection\fR command takes list of options and +returns name of newly created projection object. + +

    Name of object can be used as Tcl command which have several subcommands

    + +

    +(see \fBPROJECTION SUBCOMMANDS\fR below) used for manipulation +of projections. +

    +.SH PROJECTION TYPES + +

    Most important property of projection is projection type. fGIS supports

    + +

    +following types of projections: +

    +\» list should be here +

    +.SH PROJECTION OPTIONS +

    +\» list should be here +

    +.SH PROJECTION SUBCOMMANDS
    + +.TP 8
    + +\fIprojName \fBforward\fI long lat\fR
    + +recieves two arguments - geographic longitude and latitude as degrees in +decimal format and returs list of two double values representing map +coordinates in meters. +

    +.TP 8
    + +\fIprojName \fBbackward\fI X Y \fR
    + +performs backword transformation - given map coordinates in meters +returns longitude and latitude in decimal degrees, +.TP 8
    + +\fIprojName \fBformat\fI X Y\fR ?\fB-format\fI formatString\fR + +

    Returns formatted representation of latitude and longitude. String

    + +

    +can contain following escapes sequences:
    + +.RS
    + +.TP
    + +\fB%lt\fR
    + +unsigned latitude in DDMMSS format
    + +.TP
    + +\fB%lg\fR
    + +unsigned longitude in DDMMSS format
    + +.TP
    + +\fB%-t\fR \fB%-g\fR
    + +optionally signed latitude and longitude in DDMMSS format +.TP
    + +\fB%+t\fR \fB%+g\fR
    + +explicitely signed latitude and longitude in DDMMSS format +.TP
    + +\fB%lG %lT %-G %-T %+G %+T\fR
    + +same as above, but in decimal fractions of degree +.TP
    + +\fB%dl %dg\fR
    + +direction indicator - letters N and S for latitude and E and W for +longitude (or some other national language values as defined in fgis.rc +file).
    + +.RE
    + + +

    If \fIformatString\fR omitted, default «%lt%dt %lg%dg» is used.

    + +

    +.TP 8
    + +\fIprojName\fB dump\fR
    + +returns argumets for projection command used to create this projection +object.
    + +.TP 8
    + +\fIprojName\fB delete\fR
    + +destroys projection object. +

    +.SH «SEE ALSO" +

    +.BR proj «(1), « pj_init «(3), « transform (1) +

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/raster.n.html b/geography/fGIS/man/raster.n.html new file mode 100644 index 0000000..ad48a97 --- /dev/null +++ b/geography/fGIS/man/raster.n.html @@ -0,0 +1,417 @@ + + + + + +raster(n) manual page + + +Table of Contents

    +

    + +

    NAME

    +raster - Create and manipulate raster object

    + +

    SYNOPSIS

    + raster +filename ?options ?

    + +

    DESCRIPTION

    +

    +This command allows to create raster +objects. Raster objects are more low-level concept than fGIS layers . They +directly correspond to raster files in EPPL7 format. Their values are always +unsigned short integer. They even make cell size visible to user. This +command returns name of raster object which is used for manipulating this +object. By default it requires existing raster file without reclass table. +

    + Raster files are objects which holds information of certain integer +spatial variable in given rectangular area. Value is stored with certain +granulariry. Minimal square, which can be addressed as separate unit, is +named cell. Of course, you can specify coordinates with any precision, +but while they are in same cell, same value would be returned. Moreover, +when you edit raster, you can change values only on per cell basis.

    + Raster +file is always rectangular, but spatial variable can be defined on any +arbitrary area. So, special value is reserved for "undefined" areas of +raster. It is named offsite value. Typically you can read raster it any +coordinates, but if no information is provided for this area, offsite +would be returned.

    + There are certain limitation on raster files - file +cannot contain more than 32767 cells per row or per column. Possible values +of raster should be in range 0-65535. Rows and columns of cells can be numbered +starting from any integer, provided that no row or column in file has +number out of range -32767- 32767. fGIS, however never relies on column numbers. +They are supported only for compatibility with EPPL7.

    + Raster objects +differs from raster files in the way that they include reclass table . +This allows to store information about several spatial variables in one +file, provided that total count of value combination doesn't exceed raster +file limit. Reclass table defines correspondence between file classes (values) +and values, returned by raster object. It can be defined by two ways - using +special syntax like in EPPL7 RECLASS command (see RECLASS SYNTAX below) +or using Tcl list, each element of which is pair of values, first base, +then reclassed.

    + When raster objects are accessed or created via GIS operations, +user may not be aware about underlying raster file level. But when objects +are created by interative editing, certain properties of raster (i.e. cell +size) should be specified.

    + Raster objects behave like other fGIS objects +- layers, legends, palettes etc. Once object is created, new Tcl command +with same name is created. This command is used to access and modify rasters. +

    + +

    OPTIONS

    + +
    + +
    -reclass statements
    +
    -specifies reclass table for created raster +object. statements is string, containing set of reclass statements. See +RECLASS SYNTAX below for details
    + +
    -table list
    +
    -specifies reclass table +in form of Tcl list. Each element of this list should be list of two integers, +first of them representing value in raster file, and second - representing +value which would be value of new raster object.
    + +
    -new
    +
    - specifies that +new raster file should be created instead of opening old. This option should +be specified immediately after file name and followed by several other +options, defining properties of new raster. All subsequent options are +applicable only if -new is specified.
    + +
    -like rasterObject
    +
    - specifies that +all important properties should be copied from existing raster object. +
    + +
    -width integer
    +
    - specifies how many cells should appear in each row. Cannot +be used together with -like
    + +
    -heightinteger
    +
    - specifies how many cells +should be in each column.
    + +
    -offsiteinteger
    +
    - specifies which value would +be used as "no data" value. Default is 65535 for 16-bit files and 255 for +8-bit. Value -1 can be specified for 8-bit files. It means that all classes +are onsite. For 16-bit files it is equivalent to 65535.
    + +
    -8bit - specifies +that only one byte should be used for storing
    +
    values of raster. This limits +value range to 0-255, slightly decreases file size (usially much less than +two times) and makes file compatible with EPPL7 ver. 2.1.
    + +
    -limits{x1 y1 x2 +y2}
    +
    - Allows to specify list of four double values, determinig map coordinates +of file.
    + +
    -cell value - specifies size of cell. In conjunction with -limits +
    +
    it gives more convinient way to create new raster, becouse limits defines + area of interest and cell size - accuracy of map.
    +
    +

    + +

    OBJECT COMMAND

    +raster + command creates new Tcl command with same name as raster object, which +can be used to manipulate this object.

    + rasterName boxvalue x1 y1 x2 y2 + - fills rectangular region with given value. Raster should be opened in +read-write mode (either by -new option of object command or by load object +command). Returns list of four double values, specifying region actually +affected by command. (Can be less that specified region, if it exceeds +raster boundary). Value is class of base raster file, not reclassed value. +

    + +

    + +
    rasterName bpp - returns size of data in this raster file
    +
    (8 for 8-bit +and 16 for 16 bit rasters).
    + +
    rasterName cache ?new size ?
    +
    - controls size +of cache. If raster file is accessed from disk (default read only mode) +setting sufficient cache can improve performance of operations, which +require nonsequentual access, like transect .
    + +
    rasterName cell ?-area ? +
    +
    - returns parameters of cell. By default, returns cell width in map coordinates, +which should be meters, and with -area flag returns cell area in current +units (see unit object command).
    + +
    rasterName celllimit
    +
    - returns list +of four intergers, representig start and end numbers of cells in order +first column , last row , last column, first row . (Why this order? X direction +of cell numbers is same as of coordinates (usially), and Y coodinates +usially go from bottom to top, while cells - from top to bottom. So, order +of values is same as order of values in limits object command.
    + +
    rasterName +classes value
    +
    - returns list of base file classes which are mapped to +specified value of this raster object.
    + +
    rasterName circle value x y radius + ?-cells ?
    +
    - fills circulare region in read-write raster with given value. +If -cells ,flag is given, radius is assumed to be in raster cells. Otherwise +it is assumed to be in coordinate units. Returns list of coordinates, specifying +actualy affected region.
    + +
    rasterName col x
    +
    - returns cell number corresponding +to given X coordinate. Returns error, if coordinate is out of file boundaries. +
    + +
    rasterName comment ?string ?
    +
    - returns (or modifies) comment, stored +in file header. Comment length is limited by 32 symbols.
    + +
    rasterName count + ?options ?
    +
    - performs various area-calculating operation General formats +folows:
    + +
    rasterName count ?-- ? varname ?region specification ?
    +
    fills +dynamic array varname indexed by raster classes by areas of these classes +in given region.
    + +
    rasterName count -classes list ?region specification +?
    +
    returns area of given classes within given region.
    +
    +

    + Region specification +defaults to whole file. Other possible formats are: +

    + +
    -box x1 y1 x2 y2 +
    +
    - within given rectangular area
    + +
    -polygon x y x y ...
    +
    - within polygon, given +by set of coordinate pairs
    + +
    -radius distance x y ...
    +
    within given distance +of any of given points.
    + +
    -mask rasterObject list
    +
    in areas where value of +another rasterObject is in given list.
    +
    +

    + +

    + +
    rasterName delete
    +
    - destroys raster +object. If raster was in readwrite mode, all unsaved changes are lost.
    + +
    rasterName +extents value
    +
    - returns list of four coordinates, within those all values +of given class are contained.
    + +
    rasterName filename
    +
    - returns name of file, +corresponding to this raster object.
    + +
    rasterName fill value x y ?-stop ? +value
    +
    - fills area, starting with given coordinates with value. By default, +stops on encounter of any value other than in given point. If -stop option +is specified, stops only when encountering given value. Returns list of +coordinates, specifying actually affected region.
    + +
    rasterName frame value + x1 y1 x2 y2 ?-width cells ?
    +
    - a rectangle with given value, not changing +inside area. By default this rectangle is 1 cell wide.
    + +
    rasterName get x +y ?-base ?
    +
    Returns value of raster in given point. By default returns +reclassed value, but if -base is specified, returns class of raster file. +
    + +
    rasterName limits
    +
    Returns list of four doubles, specifying physical +limits of raster file, in order XLeft , YBottom , XRight , YTop .
    + +
    rasterName +line value x y x y .... ?-width cells ?
    +
    draws a line with given value. By +default one-cell wide. Returns boundaries of region affected.
    + +
    rasterName +load
    +
    Loads raster file into memory, changing it from readonly to readwrite +mode, and enabling all editing operation. (-new option of raster command +performs load implicitely).
    + +
    rasterName max
    +
    -returns maximal value of +raster object.
    + +
    rasterName min
    +
    - returns minimal value of raster object. +
    + +
    rasterName offsite ?value ?
    +
    - returns offsite value for raster object, +or modifies it.
    + +
    rasterName polygon value x y x y ...
    +
    - fills given polygon +of given value. Returns boundaries of region affected.
    + +
    rasterName put value +x y
    +
    Changes value of individual cell. Returns nothing.
    + +
    rasterName reclass + ?option ? ?arg ?
    +
    - manipulates reclass table. Without any options, returns +reclass table as Tcl list.
    + +
    rasterName reclass -statements
    +
    option returns +reclass table in form of reclass statements. (see RECLASS SYNTAX below). +
    + +
    rasterName reclass -table list
    +
    modifies current reclass using given Tcl +list. Values for classes given in this list would be changed as specified, +all other remains unchanged.
    + +
    rasterName reclass statements
    +
    modifies reclass +using specified reclass statements. As -table options, applies statements +to base classes and leaves all nonspecified classes as is.
    + +
    rasterName reclass +-clear
    +
    clears all changes in reclass table and makes reclassed classes +equial to base classes.
    + +
    rasterName row y
    +
    return cell number, correspondign +to given Y coordinate. Raises error, if coodinnate is outside file limits. +
    + +
    rasterName save ?options ?
    +
    - saves raster file. By default, if raster +is in readwrite mode, saves changes to current filename.
    + +
    rasterName save +-as filename
    +
    - saves raster, open for editing into other file, and makes +this file current file of this raster object.
    + +
    -backup
    +
    option can be specified +for both save and save -as commands. It makes raster object to keep old +version of file with suffix .bak appended to name.
    + +
    rasterName save -to filename + ?-8bit ?
    +
    allows to write raster object into raster file. Reclass table +is applied to this operation, so new file would have base classes like +classes of raster object, rather than classes of its base file.
    +
    +

    + If -8bit + switch is specified, resulting raster will be forced to 8-bit by discarding +high-order byte, even if max value or offsite are outside 0-255 range. (in +latter case offsite would be set to 65535). +

    + +
    rasterName shift dx dy
    +
    changes +origin of cell (row/column) numbers. This is required for certain command +of DOS version of EPPL7, although fGIS always uses map (alternative) coordinates) +
    + +
    rasterName transect ?-count varname ? x y x y ...
    +
    by default, return list +consisting of pairs {value width} along the given line. If -count is specified, +fills dynamic array varname , indexed by classes, by total widthes of +given value along this line.
    + +
    rasterName unused
    +
    returns value which is +never encountered in this raster.
    + +
    rasterName unit ?new-unit ?
    +
    - returns +(or changes) area unit of this raster Unit can be one of following: undefined +,ft .m ,km ,mile ,ha ,acre . All subsequent count operations would return +result in given units. Note: map coordinates are always in meters.
    + +
    rasterName +xleft ?new value ?
    +
    - returns (or modifies) left boundary coordinate.Note: + it simply modifies value, without appropriate changes in other limits +or cell area value.
    + +
    rasterName xright ?new value ?
    +
    - returns (or modifies) +right boundary coordinate.
    + +
    rasterName ybottom ?new value ?
    +
    - returns +(or modifies) bottom boundary coordinate.
    + +
    rasterName ytop ?new value +?
    +
    - returns (or modifies) left boundary coordinate.
    +
    + +

    RECLASS SYNTAX

    +

    + Syntax +of reclass syntax is inherited from EPPL7. General form of reclass statement +is line, terminated by newline (Note: trailing newline is obligatory), +which consist of new value and list of old (base) values. New value separated +from list by equal sign. List of old values can contain individual values +and ranges, which are two values, separated by colon.

    + +

    + +
    Example
    +
    1=1:10 +20
    +
    +

    +means, that all values from one to ten and value 20 should be reclassed +into 1.

    + Set of statements can contain arbitrary number of lines, same +value can occur on left side of several lines. If some value occur on right +side more than once, last occurence have precedence.

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/reclass1.1.html b/geography/fGIS/man/reclass1.1.html new file mode 100644 index 0000000..2fb13f4 --- /dev/null +++ b/geography/fGIS/man/reclass1.1.html @@ -0,0 +1,103 @@ + + + + + +RECLASS(1) manual page + + +Table of Contents

    +reclass1 - Change classes of given EPPL7 data file +

    SYNOPSIS

    +reclass1 [ + ] [ reclass_file] [ -o output_file] file +

    DESCRIPTION

    +Applies given set +of reclass statements to epp file. Reclass statements have simular syntax +to DOS version of EPPL7 and may be read from stdin (both from terminal +or pipe) and from file.

    +By default, creates file named reclass.out.epp in +current directory, but this behavoir can be overriden by -o option.

    +This +version can perform only one-way reclass. For multy-file reclass use intable(1) + +instead.

    +Output file is created as 16-bit and if after reclass it would +contain only classes less than 255, it would be converted into 8-bit.

    +If +offsite value of old file appears in right side of any reclass statement, +offsite value of new file would be from left side of this statement.

    +

    + +

    + +

    OPTIONS

    + +
    + +
    --help
    +
    - display brief usage message and exit successifully
    + +
    --version +
    +
    - display version information and exit successifully
    + +
    -v
    +
    - verbose. Display +number of rows processed during reclass.
    + +
    -f reclass_file
    +
    - read reclass +statements from given file, instead of stdin
    + +
    -o output_file
    +
    - write result +into given file, instead of reclass.out.epp. Suffix .epp would be substituted, +if absent.
    +
    +

    + +

    RECLASS STATEMENT SYNTAX

    +

    + Set of reclass statements consists +of zero or more lines, each of which has following structure:

    +new_class += list of old classes

    +

    + New class is number in range 0-65535. List of old +classes is space separated list of classes (numbers) and ranges. Range +is two numbers, separated by colon. First of them must be less then second, +or this range would have no effect.

    +If one old class occurs in several +statements, only last occurence would take effect, so it is possible to +write:

    +1=1:255

    +2=2

    +3=12

    +to reclass all classes between 1 and 255, exept +2 and 12 to 1 and reclass 12 to 3.

    + +

    SEE ALSO

    +eheader(1) +,cluster(1) +,rescale(1) +,outtab(1) +,intable(1) + +

    + +

    AUTHOR

    +

    + Victor B. Wagner, SoftWeyr.

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/man/window.1.html b/geography/fGIS/man/window.1.html new file mode 100644 index 0000000..1505421 --- /dev/null +++ b/geography/fGIS/man/window.1.html @@ -0,0 +1,74 @@ + + + + + +WINDOW(1) manual page + + +Table of Contents

    + +

    NAME

    +window - cuts a portion of epp file +

    SYNOPSIS

    +window [-a%] [-o output_file] + input_file fr lr fc lc +

    DESCRIPTION

    +

    + Window creates new epp-file with +given limits. If new limits exceeds limits of old file, this areas would +be filled by offsite value.

    +By default limits are given in rows/columns, +but with -a option you may use alternate coordinates.

    +Output file would +always be properly aligned with input. +

    OPTIONS

    + +
    + +
    --help
    +
    displays brief usage +information.
    + +
    --version
    +
    displays version number
    + +
    -%
    +
    Displays percentage of +processed lines in file.
    + +
    -o file
    +
    gives the name for output file. Defaults +to window.out.epp
    + +
    -a
    +
    specifies that limits are given in alternate coordinates. +
    +
    + +

    SEE ALSO

    +mosaic(1) +,eheader(1) +

    + +

    AUTHOR

    +

    + Victor B. Wagner <vitus@agropc.msk.su> +

    + +

    BUGS

    +

    + ???

    + +


    +Table of Contents

    +

    + diff --git a/geography/fGIS/tclext.html b/geography/fGIS/tclext.html new file mode 100644 index 0000000..c57d8dc --- /dev/null +++ b/geography/fGIS/tclext.html @@ -0,0 +1,185 @@ + + +fGIS Tcl extension + + + +

    fGIS Tcl extension

    + +
      +
    1. Data objects +
    2. Layers +
    3. Regions +
    4. Planchets - map visualisation +
    5. Layer visualisation modes +
    6. External program interface +
    7. Database connectivity +
    8. Tools and bricks +
    + + +fGIS Tcl extnesion consists of two parts: +
      +
    1. one that allows GIS data manipulation within Tcl script +
    2. one that allows to view maps in Tk interface. +
    +In future version they would be separated into different Tcl packages, +thus allowing to use non-Tk part for processing data without graphical +interface. +

    +

    Data objects

    +
    +
    raster +
    An object which represents raster file in Tcl script. Allows + to access data by coordinates, access metadata, stored in raster file + itself, edit raster, and even performs some, relatively simple, + analysis. +

    + raster object is combination of raster file and reclass table, + thus you can create many raster objects with different semantics from + one raster file thus saving disk space and other system resources. +

    vector +
    The same thing for vector maps (not written yet) +
    palette +
    Object which handles color table +
    patterns +
    Handles set of patterns used to visualize maps +
    legend +
    Stores table of corespondence between raster object classes and +semantic (string) values +
    projection +
    stores projection information and converts coordinates from lat/long +to X/Y and vice versa. It is based on Projection library by + Gerald Ian Evenden +
    + +

    Layers

    + +Layer Tcl representation of functional map +concept. This is an object, which can return you semantic information +for given coordinate, or draw itself as chartographic representation of +information it keeps. +

    +There are lot of different layer types which are created from different +data sources. Classification looks like: +

      +
    1. raster layers +
      1. raster - static data, read from file with tabular legend +
      2. dem - static data with values calculated from file classes by + mathematical function +
      3. chart - dynamic data obtained from database query +
      +
    2. vector layers +
      + Needs further investigation +
      +
    3. point layers +
        +
      1. tag - set of points with arbitrary values, plots itself as labeled + signs +
      2. diagram - set of points with vector of numeric values each, +plotted as bar or pie chart +
      3. observation - set of points which get values from database query +
      +
    + +Layer object have some methods and properties, but usially end-user +should operate with layer as whole, passing its name to high-level +library procedures, rather than invoking its individual method. Even +visualisation of layer is handled by "asking plachet (mapping +window) to show particular layer" as opposed to "asking layer +to show itself in particular planchet". + +

    Regions

    + +Region is collection of map, which cover same territory and have same +projection, but may differ in spatial resolution. region tcl object exist, becouse there +are some properties of region itself - projection and division into +subregions. It is high level object, which intended to be manipulited +by end-user rather than application programmer, like layer. + +

    Planchets - map visualisation

    + +Map visualisation in f(GIS) is handled via special Tk widget, called +planchet. Planchet is much like Tk +canvas and supports all operation of canvas (Actually, it is derived +from canvas). In addition, it has real-world coordinates, and knows its +current scale. It also keeps track of layers currently displayed, which +allows it to handle panning and scaling. +

    +It also have "look +feature" which allows it to return values some list of layers (not +neccessary ones currently displayed). By default it displays this +list in pop-up window upon right mouse click. +

    +Planchet also knows if +it has geographical projection defined. If so, it is able to display +current latitude/longitude of mouse pointer. Otherwise it just shows +real-world coordinates. +

    +To simplify designing of user-interfaces we've introduced a notion of +helper widgets. It means that planchet keeps track of several +widgets (status line, legend box, zoom/unzoom buttons) and updates +their states according to its own state changes. These widgets are not +part of planchet and their placement in application GUI is left to +application designer. +

    Additional attributes of planchet are scale ruler and +geographic grid, which can be shown or hidden at any time. + +

    Layer visualisation modes

    + +f(GIS) supports various layer visualisation modes. +Raster layers can be drawn in opaque colors (which is traditional for +raster GIS), in patterns, and symbols. Both symbol and pattern view +are transparent and can be overlaid over other layers. They both use +same pattern set object to store information about pattern symbol +shapes. Difference between pattern and symbol mode is that in pattern +mode patterns can be clipped by polygon boundaries when in symbol mode +symbol is drown wholly if its central point belong to corresponding +class or not drawn at all, and never would be drawn partially. + + +

    External program interface

    + +Most GIS operations in f(GIS) are implemented as +external utilities, which allows to execute them in parallel with +main GUI applications. But there should be easy way to invoke them from +GUI as well as from Tcl prompt. So, Tcl library provides helper +procedures which allows to construct high-level commands, which invokes utility, +translating high-level concepts as layers and region to lower-level +concepts, which are understood by utilities, and displays its progress +in separate window. + +

    Database connectivity

    + +It has been said already, that f(GIS) doesn't even try to implement +home-grown database management system. Instead, it uses various +RDBMS +connectivity extensions, available for Tcl. Unfortunately these +extensions don't have so unified interface as provided by DBI package +for Perl language. So, it was neccessary to develop additional +abstraction layer TclDBI which allows to write +database-related parts of f(GIS) without regard to particular RDBMS +server behind it. + +

    Tools and bricks

    + +Being a large and complicated Tcl application, f(GIS) uses a lot of +general purpose procedures, widgets and other reusable pieces of code. +In difference with commercial applications, all this tools are open +and usable for application developer and even end user. Most notable of +them include: + + diff --git a/geography/fGIS/topology.html b/geography/fGIS/topology.html new file mode 100644 index 0000000..a0a6fee --- /dev/null +++ b/geography/fGIS/topology.html @@ -0,0 +1,128 @@ + + + + Creating topology from raster + + + + +[f(GIS) home] +[EPU] +
    +

    Creating topology from raster and vice versa

    +
      +
    1. Generation of polygon labels +
    2. Generation of vector topology from raster +
    3. Rasterizing polygon coverages +
    + + +

    Generation of polygon labels

    +EPU border command should have option to generate +polygon labels along with polygon boundaries. +

    +This would allow to import polygon maps into vector-based systems like +Arc/Info and also have some additional applications like plotting barchart +and piecharts on the map. +

    +Currently both EPPL7 and Arc/Info are able to generate polygon labels +given raster map (EPPL7) or correct set of polygon boundaries (ARC/Info). +But their algorithms both have shortcomings. EPPL7 always and Arc/Info in case +of polygon with complex shape put label point too close to polygon boundary. +

    +While it can be bearable if sole purpose of this label point is to identify +polygon in vector topology map, it is not good for plotting charts other +possible applications of label points. +

    +So following algorithm is proposed: +

      +
    1. Generate unique numbers for polygons (EPU cluster command + already can do this) +
    2. Calculate distance of each raster cell to nearest polygon boundary + (combination of EPPL7 border(epp) and radius commands + can do this and + EPU thiessen command eventually would) + +
    3. Find out maximal distance from boundaries for each polygon + (outtable command) +
    4. Retrieve coordinates of any point with given distance and polygon + ID and use it as label point. (can be done with EPPL7 + intable and evaluate and is trivial thing if coded + in C. +
    + +Analysis of this algorithm shows that it can be performed using at most +two passes over raster, given that all intermediate structures are kept +in memory. +

    +First pass perform cluster and radius operations in parallel. +Write three intermediate rasters, two of which contain low and high half-words of uniquie polygon numbers and third - distance to boundaries. During +this pass table of maximal distance for each polygon should be accumulated. +

    +Second pass Find a point for each entry of polygon-distance table and +write its coordinates along with polygon ID. +

    + +

    Generation of vector topology from raster

    + +Vector topology as used by arc/info consist of following parts +
      +
    1. No arc in coverage should intersect each other +
    2. Each polygon should have exactly one label +
    3. Each arc should have atributes denoting left and right polygons. +
    4. Each point where arcs are joined (node) should have a record + which lists IDs of arcs joined in it. +
    +If we are building polygon coverage from file, generated via EPPL7 or EPU +border commands, constraints 1 and 2 are ensured by border algorithm. +If we are using algorithm described above, for label points, we have +enough information to assign left and right polygon IDs for any polyline +(arc), provided that polylines are generated on second pass of above algorithm. +

    +So, only thing we need is to create list of nodes. It is also much simplier +to do during raster scan, than processing vector file, becouse while we are +passing location of node, we have all lines joined here at hand, while in +the vector file they can be very far from each other, becouse lines which +starts at this node would be written to the file only when they would +end. +

    +The only thing which prevents me (and possible other authors of raster-based GIS) to export ready to use topology to ARC/Info instead of exporting GEN files +and requiring user to do time-consuming CLEAN or BUILD operation, is closeness of ARC/Info export format. +

    Rasterizing polygon coverages

    + +EPPL7 rasterize command operates on non-topological vector files. +Therefore it have to do three passes over file and often leave small +holes which have to be eliminated using fill command. But it works +very fast and have (especially in incarnation of EPU cluster command) +almost no limitation concerning raster size and polygon complexity. +

    +ARC/Info polygrid command produces raster without holes, but it works +very slowly (it seems that it scans entire vector file for each point of +generated raster. In PC Arc/Info 3.5 it also have some very restrictive size +limitation (5000x5000) and doesn't understand EPPL format correctly (doesn't +write coordinate information into header, doesn't support 16-bit rasters). +

    +But combining of these two algorithms can produce rasterization algorithm +which would be even faster than EPPL7 rasterize and work without holes. +

    +Idea is that while drawing lines from vector file in the raster (as EPPL +does on the first pass) we plot each line two-cell wide, giving left cell +value of left polygon and right cell value of right polygon. The only thing +left is to fill remaining parts of file by color of nearest non-offsite +point, which is guarantied to be same for all surrounding lines, due to +ARC/Info topology. +

    +This algorithm can be implemented without knowledge of ARC/Info propieritary +formats, becouse lines from coverage along with their unique IDs can +be legitimately exported into open GEN format, and arc attribute table, +which contains IDs of right and left polygons can be exported into RDBMS, +as well as polygon attribute table which contain information we really +want to plot. + + + + + + + + diff --git a/geography/index.html b/geography/index.html index fb28016..74eba44 100644 --- a/geography/index.html +++ b/geography/index.html @@ -6,6 +6,7 @@

    íÏÉ ÒÅÚÕÌØÔÁÔÙ × ÏÂÌÁÓÔÉ ÇÅÏÇÒÁÆÉÉ

    +
    -- 2.39.2