Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2525b5c88 |
@@ -1,98 +0,0 @@
|
||||
*~
|
||||
*.bak
|
||||
*.pyc
|
||||
build.local.bat
|
||||
build.local.sh
|
||||
Makefile
|
||||
Makefile.in
|
||||
CMakeFiles
|
||||
CMakeCache.txt
|
||||
CTestTestfile.cmake
|
||||
cmake_install.cmake
|
||||
install_manifest.txt
|
||||
cmake/project-config*.cmake
|
||||
README
|
||||
|
||||
/.vs*
|
||||
/*.manifest
|
||||
/*.swp
|
||||
/*build*
|
||||
/aclocal.m4
|
||||
/autom4te.cache
|
||||
/config.cache
|
||||
/config.guess
|
||||
/config.log
|
||||
/config.status
|
||||
/config.sub
|
||||
/configure
|
||||
/compile
|
||||
/depcomp
|
||||
/install-sh
|
||||
/libtool
|
||||
/ltmain.sh
|
||||
/missing
|
||||
/nbproject
|
||||
/proj.pc
|
||||
/bin
|
||||
/lib
|
||||
/DartConfiguration.tcl
|
||||
/Testing
|
||||
|
||||
# docs
|
||||
/html/dl
|
||||
/html/robots.txt
|
||||
/docs/plot/images
|
||||
/latex
|
||||
|
||||
# m4
|
||||
/m4/libtool.m4
|
||||
/m4/ltoptions.m4
|
||||
/m4/ltsugar.m4
|
||||
/m4/ltversion.m4
|
||||
/m4/lt~obsolete.m4
|
||||
|
||||
# nad
|
||||
/nad/install
|
||||
/nad/WI
|
||||
/nad/prvi
|
||||
/nad/WO
|
||||
/nad/alaska
|
||||
/nad/FL
|
||||
/nad/README.NADUS
|
||||
/nad/stpaul
|
||||
/nad/stgeorge
|
||||
/nad/TN
|
||||
/nad/conus
|
||||
/nad/MD
|
||||
/nad/hawaii
|
||||
/nad/stlrnc
|
||||
/nad/null
|
||||
/nad/*.lla
|
||||
|
||||
# src
|
||||
/src/*.o
|
||||
/src/*.lo
|
||||
/src/*.la
|
||||
/src/proj.dll
|
||||
/src/*.lib
|
||||
/src/*.pdb
|
||||
/src/*.exp
|
||||
/src/*.opt
|
||||
/src/*.obj
|
||||
/src/*.exe
|
||||
/src/.libs
|
||||
/src/.deps
|
||||
/src/*.manifest
|
||||
/src/*.swp
|
||||
/src/nad2nad
|
||||
/src/nad2bin
|
||||
/src/proj
|
||||
/src/geod
|
||||
/src/stamp-h*
|
||||
/src/proj_config.h
|
||||
/src/proj_config.h.in
|
||||
/src/cs2cs
|
||||
/src/multistresstest
|
||||
/src/test228
|
||||
|
||||
/docs/build
|
||||
@@ -1,45 +0,0 @@
|
||||
# .readthedocs.yaml
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
build:
|
||||
os: "ubuntu-22.04"
|
||||
tools:
|
||||
python: "mambaforge-4.10"
|
||||
|
||||
jobs:
|
||||
post_checkout:
|
||||
# Cancel building pull requests when there aren't changed in the docs directory or YAML file.
|
||||
# You can add any other files or directories that you'd like here as well,
|
||||
# like your docs requirements file, or other files that will change your docs build.
|
||||
#
|
||||
# If there are no changes (git diff exits with 0) we force the command to return with 183.
|
||||
# This is a special exit code on Read the Docs that will cancel the build immediately.
|
||||
- |
|
||||
if [ "$READTHEDOCS_VERSION_TYPE" = "external" ] && git diff --quiet origin/5.0 -- docs/ .readthedocs.yaml;
|
||||
then
|
||||
exit 183;
|
||||
fi
|
||||
- (git --no-pager log --pretty="tformat:%s -- %b" -1 | grep -viq "skip ci") || exit 183
|
||||
pre_build:
|
||||
- ./docs/rtd/pre_build.sh
|
||||
- ./docs/rtd/plot.sh
|
||||
|
||||
apt_packages:
|
||||
- cmake
|
||||
- ninja-build
|
||||
- gcc
|
||||
|
||||
formats:
|
||||
- pdf
|
||||
- epub
|
||||
|
||||
conda:
|
||||
environment: docs/environment.yml
|
||||
|
||||
sphinx:
|
||||
configuration: docs/source/conf.py
|
||||
fail_on_warning: true
|
||||
@@ -1,9 +1,8 @@
|
||||
Original Author:
|
||||
Gerald Evenden
|
||||
Gerald Evenden
|
||||
|
||||
Maintainer(s):
|
||||
Frank Warmerdam <warmerdam@pobox.com>
|
||||
Howard Butler <howard@hobu.co>
|
||||
|
||||
Contributors:
|
||||
Brent Fraser <bfraser@geoanalytic.com>
|
||||
@@ -11,9 +10,4 @@ Chris Stuber <imap@chesapeake.net>
|
||||
Craig Bruce <cbruce@cubewerx.com>
|
||||
Victor Osipkov <vctos@email.com>
|
||||
Andrea Antonello <andrea.antonello@hydrologis.com>
|
||||
Charles Karney <charles.karney@sri.com>
|
||||
Karsten Engsager
|
||||
Knud Poder
|
||||
Kristian Evers <kreve@sdfe.dk>
|
||||
Thomas Knudsen <thokn@sdfe.dk>
|
||||
Even Rouault <even.rouault@spatialys.com>
|
||||
|
||||
|
||||
@@ -1,165 +0,0 @@
|
||||
#################################################################################
|
||||
#
|
||||
# This file is part of CMake configuration for PROJ4 library (inspired from SOCI
|
||||
# CMake, Copyright (C) 2009-2010 Mateusz Loskot <mateusz@loskot.net> )
|
||||
#
|
||||
# Copyright (C) 2011 Nicolas David <nicolas.david@ign.fr>
|
||||
# Distributed under the MIT license
|
||||
#
|
||||
#################################################################################
|
||||
# General settings
|
||||
#################################################################################
|
||||
cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
|
||||
|
||||
# proj4 is an ANSI C project
|
||||
project(PROJ4 C)
|
||||
set(PROJECT_INTERN_NAME PROJ)
|
||||
|
||||
if (NOT CMAKE_VERSION VERSION_LESS 3.1)
|
||||
cmake_policy(SET CMP0054 NEW)
|
||||
endif ()
|
||||
# Set warnings
|
||||
if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
|
||||
# Suppress warning 4996 about sprintf, etc., being unsafe
|
||||
set(CMAKE_C_FLAGS "/wd4996 /WX ${CMAKE_C_FLAGS}")
|
||||
elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
|
||||
set(CMAKE_C_FLAGS "-std=c89 -Wall -Wextra -Wswitch -Werror \
|
||||
-Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat \
|
||||
-Werror=format-security -Wshadow ${CMAKE_C_FLAGS}")
|
||||
elseif("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
|
||||
set(CMAKE_C_FLAGS "-std=c89 -Wall -Wextra -Wswitch -Werror \
|
||||
-Wc99-extensions -Wc11-extensions -Wunused-parameter -Wmissing-prototypes \
|
||||
-Wmissing-declarations -Wformat -Werror=format-security -Wshadow \
|
||||
-Wfloat-conversion ${CMAKE_C_FLAGS}")
|
||||
endif()
|
||||
|
||||
# Tell Intel compiler to do arithmetic accurately. This is needed to
|
||||
# stop the compiler from ignoring parentheses in expressions like
|
||||
# (a + b) + c and from simplifying 0.0 + x to x (which is wrong if
|
||||
# x = -0.0).
|
||||
if (CMAKE_C_COMPILER_ID STREQUAL "Intel")
|
||||
if (MSVC)
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:precise")
|
||||
else ()
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
#################################################################################
|
||||
# PROJ4 CMake modules
|
||||
#################################################################################
|
||||
# Path to additional CMake modules
|
||||
set(CMAKE_MODULE_PATH ${PROJ4_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
|
||||
set(CMAKE_MODULE_PATH ${PROJ4_SOURCE_DIR}/cmake/modules ${CMAKE_MODULE_PATH})
|
||||
|
||||
include(Proj4Utilities)
|
||||
|
||||
message(STATUS "")
|
||||
colormsg(_HIBLUE_ "Configuring PROJ:")
|
||||
|
||||
#################################################################################
|
||||
#PROJ version information
|
||||
#################################################################################
|
||||
include(Proj4Version)
|
||||
proj_version(MAJOR 5 MINOR 0 PATCH 0)
|
||||
set(PROJ_API_VERSION "13")
|
||||
set(PROJ_BUILD_VERSION "13.1.0")
|
||||
|
||||
#################################################################################
|
||||
# Build features and variants
|
||||
#################################################################################
|
||||
include(Proj4SystemInfo)
|
||||
include(Proj4Config)
|
||||
include(Proj4Mac)
|
||||
include(policies)
|
||||
|
||||
#################################################################################
|
||||
# threading configuration
|
||||
#################################################################################
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||
find_package (Threads)
|
||||
|
||||
include(CheckIncludeFiles)
|
||||
include(CheckSymbolExists)
|
||||
CHECK_SYMBOL_EXISTS(PTHREAD_MUTEX_RECURSIVE pthread.h HAVE_PTHREAD_MUTEX_RECURSIVE_DEFN)
|
||||
if (HAVE_PTHREAD_MUTEX_RECURSIVE_DEFN)
|
||||
add_definitions(-DHAVE_PTHREAD_MUTEX_RECURSIVE=1)
|
||||
endif()
|
||||
|
||||
include (CheckCSourceCompiles)
|
||||
if (MSVC)
|
||||
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} /WX")
|
||||
else ()
|
||||
set (CMAKE_REQUIRED_LIBRARIES m)
|
||||
set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} -Werror")
|
||||
endif ()
|
||||
# Check whether the C99 math function: hypot, atanh, etc. are available.
|
||||
check_c_source_compiles (
|
||||
"#include <math.h>
|
||||
int main() {
|
||||
int q;
|
||||
return (int)(hypot(3.0, 4.0) + atanh(0.8) + cbrt(8.0) +
|
||||
remquo(100.0, 90.0, &q) +
|
||||
remainder(100.0, 90.0) + copysign(1.0, -0.0));
|
||||
}\n" C99_MATH)
|
||||
if (C99_MATH)
|
||||
add_definitions (-DHAVE_C99_MATH=1)
|
||||
else ()
|
||||
add_definitions (-DHAVE_C99_MATH=0)
|
||||
endif ()
|
||||
|
||||
boost_report_value(PROJ_PLATFORM_NAME)
|
||||
boost_report_value(PROJ_COMPILER_NAME)
|
||||
|
||||
# Set a default build type for single-configuration cmake generators if
|
||||
# no build type is set.
|
||||
if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
|
||||
set (CMAKE_BUILD_TYPE Release)
|
||||
endif ()
|
||||
|
||||
if (MSVC OR CMAKE_CONFIGURATION_TYPES)
|
||||
# For multi-config systems and for Visual Studio, the debug version of
|
||||
# the library has _d appended.
|
||||
set (CMAKE_DEBUG_POSTFIX _d)
|
||||
endif ()
|
||||
|
||||
option(PROJ4_TESTS "Enable build of collection of PROJ4 tests" ON)
|
||||
boost_report_value(PROJ4_TESTS)
|
||||
if(PROJ4_TESTS)
|
||||
include(CTest)
|
||||
enable_testing()
|
||||
endif(PROJ4_TESTS)
|
||||
include(Proj4Test)
|
||||
|
||||
# Put the libraries and binaries that get built into directories at the
|
||||
# top of the build tree rather than in hard-to-find leaf
|
||||
# directories. This simplifies manual testing and the use of the build
|
||||
# tree rather than installed Boost libraries.
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
|
||||
link_directories(${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
|
||||
|
||||
#################################################################################
|
||||
# Installation
|
||||
#################################################################################
|
||||
include(Proj4InstallPath)
|
||||
set(BINDIR "${DEFAULT_BINDIR}" CACHE PATH "The directory to install binaries into.")
|
||||
set(LIBDIR "${DEFAULT_LIBDIR}" CACHE PATH "The directory to install libraries into.")
|
||||
set(DATADIR "${DEFAULT_DATADIR}" CACHE PATH "The directory to install data files into.")
|
||||
set(DOCDIR "${DEFAULT_DOCDIR}" CACHE PATH "The directory to install doc files into.")
|
||||
set(INCLUDEDIR "${DEFAULT_INCLUDEDIR}" CACHE PATH "The directory to install includes into.")
|
||||
set(CMAKECONFIGDIR "${DEFAULT_CMAKEDIR}" CACHE PATH "The directory to install cmake config files into.")
|
||||
|
||||
#################################################################################
|
||||
# Build configured components
|
||||
#################################################################################
|
||||
include_directories(${PROJ4_SOURCE_DIR}/src)
|
||||
|
||||
message(STATUS "")
|
||||
add_subdirectory(nad)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(man)
|
||||
add_subdirectory(cmake)
|
||||
add_subdirectory(test)
|
||||
|
||||
@@ -1,184 +0,0 @@
|
||||
# How to contribute to PROJ.4
|
||||
|
||||
PROJ.4 has a wide and varied user base. Some are highly skilled geodesists with a deep
|
||||
knowledge of map projections and reference systems, some are GIS software developers
|
||||
and others are GIS users. All users, regardless of the profession or skill level,
|
||||
has the ability to contribute to PROJ.4. Here's a few suggestion on how:
|
||||
|
||||
* Help PROJ.4-users that is less experienced than yourself.
|
||||
* Write a bug report
|
||||
* Request a new feature
|
||||
* Write documentation for your favorite map projection
|
||||
* Fix a bug
|
||||
* Implement a new feature
|
||||
|
||||
In the following sections you can find some guidelines on how to contribute.
|
||||
As PROJ.4 is managed on GitHub most contributions require that you have a GitHub
|
||||
account. Familiarity with [issues](https://guides.github.com/features/issues/) and
|
||||
the [GitHub Flow](https://guides.github.com/introduction/flow/) is an advantage.
|
||||
|
||||
## Help a fellow PROJ.4 user
|
||||
The main forum for support for PROJ.4 is the mailing list. You can subscribe to
|
||||
the mailing list [here](http://lists.maptools.org/mailman/listinfo/proj) and read
|
||||
the archive [here](http://lists.maptools.org/pipermail/proj/).
|
||||
|
||||
If you have questions about the usage of PROJ.4 the mailing list is also the place to go.
|
||||
Please *do not* use the GitHub issue tracker as a support forum. Your question is much
|
||||
more likely to be answered on the mailing list, as many more people follow that than
|
||||
the issue tracker.
|
||||
|
||||
## Adding bug reports
|
||||
|
||||
Bug reports are handled in the [issue tracker](https://github.com/OSGeo/proj.4/issues)
|
||||
on PROJ.4's home on GitHub. Writing a good bug report is not easy. But fixing a poorly
|
||||
documented bug is not easy either, so please put in the effort it takes to create a
|
||||
thorough bug report.
|
||||
|
||||
A good bug report includes at least:
|
||||
|
||||
* A title that quickly explains the problem
|
||||
* A description of the problem and how it can be reproduced
|
||||
* Version of PROJ.4 being used
|
||||
* Version numbers of any other relevant software being used, e.g. operating system
|
||||
* A description of what already has been done to solve the problem
|
||||
|
||||
The more information that is given up front, the more likely it is that a developer
|
||||
will find interest in solving the problem. You will probably get follow-up questions
|
||||
after submitting a bug report. Please answer them in a timely manner if you have an
|
||||
interest in getting the issue solved.
|
||||
|
||||
Finally, please only submit bug reports that are actually related to PROJ.4. If the
|
||||
issue materializes in software that uses PROJ.4 it is likely a problem with that
|
||||
particular software. Make sure that it actually is a PROJ.4 problem before you submit
|
||||
an issue. If you can reproduce the problem only by using tools from PROJ.4 it is
|
||||
definitely a problem with PROJ.4.
|
||||
|
||||
## Feature requests
|
||||
|
||||
Got an idea for a new feature in PROJ.4? Submit a thorough description of the new
|
||||
feature in the [issue tracker](https://github.com/OSGeo/proj.4/issues). Please
|
||||
include any technical documents that can help the developer make the new feature a
|
||||
reality. An example of this could be a publicly available academic paper that
|
||||
describes a new projection. Also, including a numerical test case will make it
|
||||
much easier to verify that an implementation of your requested feature actually
|
||||
works as you expect.
|
||||
|
||||
Note that not all feature requests are accepted.
|
||||
|
||||
## Write documentation
|
||||
|
||||
PROJ.4 is in dire need of better documentation. Any contributions of documentation
|
||||
are greatly appreciated. The PROJ.4 documentation is available on [proj4.org](ttp://proj4.org).
|
||||
The website is generated with [Sphinx](http://www.sphinx-doc.org/en/stable/). Contributions
|
||||
to the documentation should be made as [Pull Requests](https://github.com/OSGeo/proj.4/pulls)
|
||||
on GitHub.
|
||||
|
||||
If you intend to document one of PROJ.4's supported projections please use the
|
||||
[Mercator projection](http://proj4.org/projections/merc.html) as a template.
|
||||
|
||||
|
||||
## Code contributions
|
||||
|
||||
Code contributions can be either bug fixes or new features. The process is the same
|
||||
for both, so they will be discussed together in this section.
|
||||
|
||||
### Making Changes
|
||||
|
||||
* Create a topic branch from where you want to base your work.
|
||||
* You usually should base your topic branch off of the master branch.
|
||||
* To quickly create a topic branch: `git checkout -b my-topic-branch`
|
||||
* Make commits of logical units.
|
||||
* Check for unnecessary whitespace with `git diff --check` before committing.
|
||||
* Make sure your commit messages are in the [proper format](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
|
||||
* Make sure you have added the necessary tests for your changes.
|
||||
* Make sure that all tests pass
|
||||
|
||||
### Submitting Changes
|
||||
|
||||
* Push your changes to a topic branch in your fork of the repository.
|
||||
* Submit a pull request to the PROJ.4 repository in the OSGeo organization.
|
||||
* If your pull request fixes/references an issue, include that issue number in the pull request. For example:
|
||||
|
||||
```
|
||||
Wiz the bang
|
||||
|
||||
Fixes #123.
|
||||
```
|
||||
|
||||
* PROJ.4 developers will look at your patch and take an appropriate action.
|
||||
|
||||
### Coding conventions
|
||||
|
||||
#### Programming language
|
||||
PROJ.4 is developed strictly in ANSI C 89.
|
||||
|
||||
#### Coding style
|
||||
We don't enforce any particular coding style, but please try to keep it as simple as possible.
|
||||
If improving existing code, please try to conform with the style of the locally surrounding code.
|
||||
|
||||
#### Whitespace
|
||||
Throughout the PROJ.4 code base you will see differing whitespace use.
|
||||
The general rule is to keep whitespace in whatever form it is
|
||||
in the file you are currently editing. If the file has a mix of tabs and space please
|
||||
convert the tabs to space in a separate commit before making any other changes. This
|
||||
makes it a lot easier to see the changes in diffs when evaluating the changed code. New
|
||||
files should use spaces as whitespace.
|
||||
|
||||
#### File names
|
||||
Files in which projections are implemented are prefixed with an upper-case `PJ_` and most other
|
||||
files are prefixed with lower-case `pj_`. Some file deviate from this pattern, most of them dates
|
||||
back to the very early releases of PROJ.4. New contributions should follow the pj-prefix pattern.
|
||||
Unless there are obvious reasons not to.
|
||||
|
||||
#### Legalese
|
||||
Commiters are the front line gatekeepers to keep the code base clear of improperly contributed code.
|
||||
It is important to the PROJ.4 users, developers and the OSGeo foundation to avoid contributing any
|
||||
code to the project without it being clearly licensed under the project license.
|
||||
|
||||
Generally speaking the key issues are that those providing code to be included in the repository
|
||||
understand that the code will be released under the MIT/X license, and that the person providing
|
||||
the code has the right to contribute the code. For the commiter themselves understanding about
|
||||
the license is hopefully clear. For other contributors, the commiter should verify the understanding
|
||||
unless the commiter is very comfortable that the contributor understands the license (for
|
||||
instance frequent contributors).
|
||||
|
||||
If the contribution was developed on behalf of an employer (on work time, as part of a work project,
|
||||
etc) then it is important that an appropriate representative of the employer understand that the
|
||||
code will be contributed under the MIT/X license. The arrangement should be cleared with an
|
||||
authorized supervisor/manager, etc.
|
||||
|
||||
The code should be developed by the contributor, or the code should be from a source which can be
|
||||
rightfully contributed such as from the public domain, or from an open source project under a
|
||||
compatible license.
|
||||
|
||||
All unusual situations need to be discussed and/or documented.
|
||||
|
||||
Commiters should adhere to the following guidelines, and may be personally legally liable for
|
||||
improperly contributing code to the source repository:
|
||||
|
||||
* Make sure the contributor (and possibly employer) is aware of the contribution terms.
|
||||
* Code coming from a source other than the contributor (such as adapted from another project)
|
||||
should be clearly marked as to the original source, copyright holders, license terms and so forth.
|
||||
This information can be in the file headers, but should also be added to the project licensing
|
||||
file if not exactly matching normal project licensing (COPYING).
|
||||
* Existing copyright headers and license text should never be stripped from a file. If a copyright
|
||||
holder wishes to give up copyright they must do so in writing to the foundation before copyright
|
||||
messages are removed. If license terms are changed it has to be by agreement (written in email is
|
||||
ok) of the copyright holders.
|
||||
* Code with licenses requiring credit, or disclosure to users should be added to COPYING.
|
||||
* When substantial contributions are added to a file (such as substantial patches) the
|
||||
author/contributor should be added to the list of copyright holders for the file.
|
||||
* If there is uncertainty about whether a change is proper to contribute to the code base, please
|
||||
seek more information from the project steering committee, or the foundation legal counsel.
|
||||
|
||||
|
||||
## Additional Resources
|
||||
|
||||
* [General GitHub documentation](http://help.github.com/)
|
||||
* [GitHub pull request documentation](https://help.github.com/articles/about-pull-requests/)
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
The _code contribution_ section of this CONTRIBUTING file is inspired by
|
||||
[PDAL's](https://github.com/PDAL/PDAL/blob/master/CONTRIBUTING.md) and the _legalese_ section is
|
||||
modified from [GDAL contributer guidelines](https://trac.osgeo.org/gdal/wiki/rfc3_commiters)
|
||||
@@ -1,51 +0,0 @@
|
||||
##
|
||||
# osgeo/proj.4
|
||||
|
||||
FROM ubuntu:xenial
|
||||
|
||||
MAINTAINER Howard Butler <howard@hobu.co>
|
||||
|
||||
|
||||
# Setup build env
|
||||
RUN mkdir /build
|
||||
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 16126D3A3E5C1192 \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --fix-missing --no-install-recommends \
|
||||
software-properties-common build-essential ca-certificates \
|
||||
git make cmake wget unzip libtool automake python-pip \
|
||||
libpython-dev libjpeg-dev zlib1g-dev \
|
||||
python-dev python-pip g++ doxygen dvipng \
|
||||
cmake libjpeg8-dev zlib1g-dev texlive-latex-base \
|
||||
texlive-latex-extra git \
|
||||
graphviz python-matplotlib \
|
||||
python-setuptools imagemagick \
|
||||
&& apt-get remove --purge -y $BUILD_PACKAGES && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
RUN mkdir /vdatum \
|
||||
&& cd /vdatum \
|
||||
&& wget http://download.osgeo.org/proj/vdatum/usa_geoid2012.zip && unzip -j -u usa_geoid2012.zip -d /usr/share/proj \
|
||||
&& wget http://download.osgeo.org/proj/vdatum/usa_geoid2009.zip && unzip -j -u usa_geoid2009.zip -d /usr/share/proj \
|
||||
&& wget http://download.osgeo.org/proj/vdatum/usa_geoid2003.zip && unzip -j -u usa_geoid2003.zip -d /usr/share/proj \
|
||||
&& wget http://download.osgeo.org/proj/vdatum/usa_geoid1999.zip && unzip -j -u usa_geoid1999.zip -d /usr/share/proj \
|
||||
&& wget http://download.osgeo.org/proj/vdatum/vertcon/vertconc.gtx && mv vertconc.gtx /usr/share/proj \
|
||||
&& wget http://download.osgeo.org/proj/vdatum/vertcon/vertcone.gtx && mv vertcone.gtx /usr/share/proj \
|
||||
&& wget http://download.osgeo.org/proj/vdatum/vertcon/vertconw.gtx && mv vertconw.gtx /usr/share/proj \
|
||||
&& wget http://download.osgeo.org/proj/vdatum/egm96_15/egm96_15.gtx && mv egm96_15.gtx /usr/share/proj \
|
||||
&& wget http://download.osgeo.org/proj/vdatum/egm08_25/egm08_25.gtx && mv egm08_25.gtx /usr/share/proj \
|
||||
&& rm -rf /vdatum
|
||||
|
||||
RUN pip install Sphinx breathe \
|
||||
sphinx_bootstrap_theme awscli sphinxcontrib-bibtex \
|
||||
sphinx_rtd_theme
|
||||
|
||||
RUN git clone https://github.com/OSGeo/proj.4.git \
|
||||
&& cd proj.4 \
|
||||
&& ./autogen.sh \
|
||||
&& ./configure --prefix=/usr \
|
||||
&& make \
|
||||
&& make install \
|
||||
&& cd /proj.4/docs \
|
||||
&& make html \
|
||||
&& rm -rf /proj.4
|
||||
|
||||
@@ -1,38 +1,28 @@
|
||||
Preparing a PROJ.4 Release
|
||||
==========================
|
||||
|
||||
1) Update the version number in configure.ac (in AC_INIT()).
|
||||
|
||||
1a) Update the version number in PROJ_BUILD_VERSION in CMakeLists.txt
|
||||
1b) Update the version number in doc/source/conf.py
|
||||
1c) Update version numbers in man pages in man/man1/ and man/man3/
|
||||
1) Update the version number in configure.in (in AC_INIT()).
|
||||
|
||||
2) Update the version number in proj_api.h (#define PJ_VERSION).
|
||||
|
||||
2a) Update PROJ_VERSION_MAJOR, PROJ_VERSION_MINOR and PROJ_VERSION_PATCH
|
||||
in src/proj.h
|
||||
|
||||
3) Update the version number, and date in src/pj_release.c.
|
||||
|
||||
4) Update the version number in the -version-info definition in
|
||||
src/Makefile.am. It consists of "current:revision:age".
|
||||
4) Update the version number in the -version-info definition in
|
||||
src/Makefile.am. It consists of "current:revision:age".
|
||||
|
||||
4a) Increment PROJ_BUILD_VERSION in CMakeLists.txt to follow
|
||||
libtool versioning
|
||||
- If the library source code has changed at all since the last update,
|
||||
then increment revision (c:r:a becomes c:r+1:a).
|
||||
|
||||
- If the library source code has changed at all since the last update,
|
||||
then increment revision (c:r:a becomes c:r+1:a).
|
||||
- If any interfaces have been added, removed, or changed since the last
|
||||
update, increment current, and set revision to 0.
|
||||
|
||||
- If any interfaces have been added, removed, or changed since the last
|
||||
update, increment current, and set revision to 0.
|
||||
- If any interfaces have been added since the last public release, then
|
||||
increment age.
|
||||
|
||||
- If any interfaces have been added since the last public release, then
|
||||
increment age.
|
||||
- If any interfaces have been removed since the last public release, then
|
||||
set age to 0.
|
||||
|
||||
- If any interfaces have been removed since the last public release, then
|
||||
set age to 0.
|
||||
|
||||
4.5) Run "autogen.sh" (hopefully on the same machine it was last run on)
|
||||
4.5) Run "automake" and "autoconf".
|
||||
|
||||
5) Add a note to the ChangeLog that a new release is being issued, and what
|
||||
the release number is.
|
||||
@@ -45,31 +35,24 @@
|
||||
- %setup line
|
||||
- rm -rf line
|
||||
|
||||
8) If this is a major release, prepare a branch.
|
||||
|
||||
git checkout -b 5.0
|
||||
|
||||
9) Tag the release
|
||||
|
||||
git tag 5.0.0
|
||||
9) Tag the release with a command like "cvs tag -F proj_4_4_3".
|
||||
|
||||
10) Do a "make dist-all" in the proj root directory. After some grinding
|
||||
this should result in files like proj-4.4.3.tar.gz and proj-4.4.3.zip
|
||||
being created. These are full source distributions.
|
||||
being created. These are full source distributions.
|
||||
|
||||
11) Put these in the proj ftp area on /osgeo/download/proj on
|
||||
download.osgeo.org. This can be done via scp using a command like the
|
||||
following.
|
||||
11) Put these in the proj ftp area on ftp.remotesensing.org. This can be
|
||||
done via scp using a command like the following.
|
||||
|
||||
scp proj-4.4.3.{tar.gz,zip} warmerdam@download.osgeo.org:/osgeo/download/proj
|
||||
scp proj-4.4.3.{tar.gz,zip} frankw@upload.osgeo.org:/osgeo/download/proj
|
||||
|
||||
12) Announce the new release on the PROJ.4 and MetaCRS mailing lists.
|
||||
12) Announce the new release on the PROJ.4 and MetaCRS mailing lists.
|
||||
|
||||
13) Issue a new release report on GitHub:
|
||||
13) Issue a new release report on Freshmeat.
|
||||
|
||||
https://github.com/OSGeo/proj.4/releases/new
|
||||
http://freshmeat.net/projects/proj.4/
|
||||
|
||||
NOTES:
|
||||
|
||||
o Information about preparing binary releases, and RPMs should be formalized.
|
||||
o A "beta" release step should likely be incorporated.
|
||||
o A "beta" release step should likely be incorporated.
|
||||
|
||||
@@ -1,16 +1,5 @@
|
||||
SUBDIRS = src man nad jniwrap cmake test
|
||||
SUBDIRS = src man nad jniwrap
|
||||
|
||||
EXTRA_DIST = makefile.vc nmake.opt CMakeLists.txt
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = proj.pc
|
||||
EXTRA_DIST = makefile.vc nmake.opt
|
||||
|
||||
AUTOMAKE_OPTIONS = dist-zip
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
|
||||
README: README.md
|
||||
fgrep -v "[![" $< > $@
|
||||
|
||||
clean-local:
|
||||
$(RM) README
|
||||
|
||||
@@ -0,0 +1,613 @@
|
||||
# Makefile.in generated by automake 1.10 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = .
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \
|
||||
ChangeLog INSTALL NEWS config.guess config.sub depcomp \
|
||||
install-sh ltconfig ltmain.sh missing mkinstalldirs
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/src/proj_config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JNI_INCLUDE = @JNI_INCLUDE@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MUTEX_SETTING = @MUTEX_SETTING@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = src man nad jniwrap
|
||||
EXTRA_DIST = makefile.vc nmake.opt
|
||||
AUTOMAKE_OPTIONS = dist-zip
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh:
|
||||
@:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
|
||||
cd $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d $(distdir) || mkdir $(distdir)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& cd $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-libtool \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
|
||||
install-strip
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am am--refresh check check-am clean clean-generic \
|
||||
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
|
||||
dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
|
||||
distclean-generic distclean-libtool distclean-tags \
|
||||
distcleancheck distdir distuninstallcheck dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
@@ -1,486 +1,8 @@
|
||||
5.0.1 Release Notes
|
||||
-------------------
|
||||
|
||||
BUG FIXES
|
||||
------------
|
||||
|
||||
All bug fix numbers refer to issues or pull requests indexed at
|
||||
https://github.com/OSGeo/proj.4/
|
||||
|
||||
o Handle ellipsoid change correctly in pipelines when
|
||||
+towgs84=0,0,0 is set #881
|
||||
|
||||
o Handle the case where nad_ctable2_init returns NULL #883
|
||||
|
||||
o Avoid shadowed declaration errors with old gcc #880
|
||||
|
||||
o Expand +datum properly +datum in pipelines #872
|
||||
|
||||
o Fail gracefully when incorrect headers are encountered in grid
|
||||
files #875
|
||||
|
||||
o Improve roundtrip stability in pipelines using +towgs84 #871
|
||||
|
||||
o Fixed typo in gie error codes #861
|
||||
|
||||
o Numerical stability fixes to the geodesic package #826 #843
|
||||
|
||||
o Make sure that transient errors are returned correctly #857
|
||||
|
||||
o Make sure that locally installed header files are not used when
|
||||
building PROJ #849
|
||||
|
||||
o Fix inconsistent parameter names in proj.h/proj_4D_api.c #842
|
||||
|
||||
o Make sure +vunits is applied #833
|
||||
|
||||
o Fix incorrect Web Mercator transformations #834
|
||||
|
||||
THANKS TO
|
||||
------------
|
||||
|
||||
Version 5.0.1 is made possible by the following contributors:
|
||||
|
||||
Mike Toews
|
||||
Kurt Schwehr
|
||||
Even Rouault
|
||||
Charles Karney
|
||||
Thomas Knudsen
|
||||
Kristian Evers
|
||||
|
||||
|
||||
5.0.0 Release Notes
|
||||
-------------------
|
||||
|
||||
This version of PROJ introduces some significant extensions and
|
||||
improvements to (primarily) the geodetic functionality of the system.
|
||||
|
||||
The main driver for introducing the new features is the emergence of
|
||||
dynamic reference frames, the increasing use of high accuracy GNSS,
|
||||
and the related growing demand for accurate coordinate
|
||||
transformations. While older versions of PROJ included some geodetic
|
||||
functionality, the new framework lays the foundation for turning PROJ
|
||||
into a generic geospatial coordinate transformation engine.
|
||||
|
||||
The core of the library is still the well established projection code.
|
||||
The new functionality is primarily exposed in a new programming
|
||||
interface and a new command line utility, "cct" (for "Coordinate
|
||||
Conversion and Transformation"). The old programming interface is
|
||||
still available and can - to some extent - use the new geodetic
|
||||
transformation features.
|
||||
|
||||
The internal architecture has also seen many changes and much
|
||||
improvement. So far, these improvements respect the existing
|
||||
programming interface. But the process has revealed a need to simplify
|
||||
and reduce the code base, in order to support sustained active
|
||||
development.
|
||||
|
||||
!!!
|
||||
!!! Therefore we have scheduled regular releases over the coming years
|
||||
!!! which will gradually remove the old programming interface.
|
||||
!!!
|
||||
!!! This will cause breaking changes with the next two major version
|
||||
!!! releases, which will affect all projects that depend on PROJ
|
||||
!!! (cf. section "deprecations" below).
|
||||
!!!
|
||||
|
||||
The decision to break the existing API has not been easy, but has
|
||||
ultimately been deemed necessary to ensure the long term survival of
|
||||
the project. Not only by improving the maintainability immensely, but
|
||||
also by extending the potential user (and hence developer) community.
|
||||
|
||||
The end goal is to deliver a generic coordinate transformation
|
||||
software package with a clean and concise code base appealing to
|
||||
both users and developers.
|
||||
|
||||
|
||||
VERSIONING AND NAMING
|
||||
---------------------
|
||||
|
||||
For the first time in more than 25 years the major version number of
|
||||
the software is changed. The decision to do this is based on the many
|
||||
new features and new API. While backwards compatibility remains -
|
||||
except in a few rare corner cases - the addition of a new and improved
|
||||
programming interface warrants a new major release.
|
||||
|
||||
The new major version number unfortunately leaves the project in a bit
|
||||
of a conundrum regarding the name. For the majority of the life-time
|
||||
of the product it has been known as PROJ.4, but since we have now
|
||||
reached version 5 the name is no longer aligned with the version
|
||||
number.
|
||||
|
||||
Hence we have decided to decouple the name from the version number and
|
||||
from this version and onwards the product will simply be called PROJ.
|
||||
|
||||
In recognition of the history of the software we are keeping PROJ.4 as
|
||||
the *name of the organizing project*. The same project team also
|
||||
produces the datum-grid package.
|
||||
|
||||
In summary:
|
||||
|
||||
o The PROJ.4 project provides the product PROJ, which is now at
|
||||
version 5.0.0.
|
||||
|
||||
o The foundational component of PROJ is the library libproj.
|
||||
|
||||
o Other PROJ components include the application proj, which provides
|
||||
a command line interface to libproj.
|
||||
|
||||
o The PROJ.4 project also distributes the datum-grid package,
|
||||
which at the time of writing is at version 1.6.0.
|
||||
|
||||
|
||||
UPDATES
|
||||
-------
|
||||
|
||||
o Introduced new API in proj.h.
|
||||
- The new API is orthogonal to the existing proj_api.h API and the
|
||||
internally used projects.h API.
|
||||
- The new API adds the ability to transform spatiotemporal (4D)
|
||||
coordinates.
|
||||
- Functions in the new API use the "proj_" namespace.
|
||||
- Data types in the new API use the "PJ_" namespace, with a few
|
||||
historic exceptions such as XY, XYZ, LP and LPZ.
|
||||
|
||||
o Introduced the concept of "transformation pipelines" that makes it
|
||||
possible to do complex geodetic transformations of spatiotemporal
|
||||
coordinates by daisy chaining simple coordinate operations.
|
||||
|
||||
o Introduced cct, the Coordinate Conversion and Transformation
|
||||
application.
|
||||
|
||||
o Introduced gie, the Geospatial Integrity Investigation Environment.
|
||||
- Selftest invoked by -C flag in proj has been removed
|
||||
- Ported approx. 1300 built-in selftests to gie format
|
||||
- Ported approx. 1000 tests from the gigs test framework
|
||||
- Added approx. 200 new tests
|
||||
|
||||
o Adopted terminology from the OGC/ISO-19100 geospatial standards
|
||||
series. Key definitions are:
|
||||
- At the most generic level, a *coordinate operation* is a change
|
||||
of coordinates, based on a one-to-one relationship, from one
|
||||
coordinate reference system to another.
|
||||
- A *transformation* is a coordinate operation in which the two
|
||||
coordinate reference systems are based on different datums, e.g.
|
||||
a change from a global reference frame to a regional frame.
|
||||
- A *conversion* is a coordinate operation in which both
|
||||
coordinate reference systems are based on the same datum,
|
||||
e.g. change of units of coordinates.
|
||||
- A *projection* is a coordinate conversion from an ellipsoidal
|
||||
coordinate system to a plane. Although projections are simply
|
||||
conversions according to the standard, they are treated as
|
||||
separate entities in PROJ as they make up the vast majority
|
||||
of operations in the library.
|
||||
|
||||
o New operations:
|
||||
- The pipeline operator (pipeline)
|
||||
- Transformations:
|
||||
+ Helmert transform (helmert)
|
||||
+ Horner real and complex polynomial evaluation (horner)
|
||||
+ Horizontal gridshift (hgridshift)
|
||||
+ Vertical gridshift (vgridshift)
|
||||
+ Molodensky transform (molodensky)
|
||||
+ Kinematic gridshift with deformation model (deformation)
|
||||
- Conversions:
|
||||
+ Unit conversion (unitconvert)
|
||||
+ Axis swap (axisswap)
|
||||
- Projections:
|
||||
+ Central Conic projection (ccon)
|
||||
|
||||
o Significant documentation updates, including
|
||||
- Overhaul of the structure of the documentation
|
||||
- A better introduction to the use of PROJ
|
||||
- A complete reference to the new proj.h API
|
||||
- a complete rewrite of the section on geodesic calculations
|
||||
- Figures for all projections
|
||||
|
||||
o New "free format" option for operation definitions, which
|
||||
permits separating tokens by whitespace when specifying key/value-
|
||||
pairs, e.g. "proj = merc lat_0 = 45".
|
||||
|
||||
o Added metadata to init-files that can be read with the
|
||||
proj_init_info() function in the new proj.h API.
|
||||
|
||||
o Added ITRF2000, ITRF2008 and ITRF2014 init-files with ITRF
|
||||
transformation parameters, including plate motion model
|
||||
parameters.
|
||||
|
||||
o Added ellipsoid parameters for GSK2011, PZ90 and "danish". The
|
||||
latter is similar to the already supported andrae ellipsoid,
|
||||
but has a slightly different semimajor axis.
|
||||
|
||||
o Added Copenhagen prime meridian.
|
||||
|
||||
o Updated EPSG database to version 9.2.0.
|
||||
|
||||
o Geodesic library updated to version 1.49.2-c.
|
||||
|
||||
o Support for analytical partial derivatives has been removed.
|
||||
|
||||
o Improved performance in Winkel Tripel and Aitoff.
|
||||
|
||||
o Introduced pj_has_inverse() function to proj_api.h. Checks if an
|
||||
operation has an inverse. Use this instead of checking whether
|
||||
P->inv exists, since that can no longer be relied on.
|
||||
|
||||
o ABI version number updated to 13:0:0.
|
||||
|
||||
o Removed support for Windows CE.
|
||||
|
||||
o Removed the VB6 COM interface.
|
||||
|
||||
BUG FIXES
|
||||
------------
|
||||
|
||||
All bug fix numbers refer to issues indexed at
|
||||
https://github.com/OSGeo/proj.4/issues/
|
||||
|
||||
o Fixed incorrect convergence calculation in Lambert Conformal
|
||||
Conic. #16.
|
||||
|
||||
o Handle ellipsoid parameters correctly when using +nadgrids=@null.
|
||||
#22.
|
||||
|
||||
o Return correct latitude when using negative northings in
|
||||
Transverse Mercator (tmerc). #138.
|
||||
|
||||
o Return correct result at origin in inverse Mod. Stererographic
|
||||
of Alaska. #161.
|
||||
|
||||
o Return correct result at origin in inverse Mod. Stererographic
|
||||
of 48 U.S. #162.
|
||||
|
||||
o Return correct result at origin in inverse Mod. Stererographic
|
||||
of 50 U.S. #163.
|
||||
|
||||
o Return correct result at origin in inverse Lee Oblated
|
||||
Stereographic. #164.
|
||||
|
||||
o Return correct result at origin in inverse Miller Oblated
|
||||
Stereographic. #164.
|
||||
|
||||
o Fixed scaling and wrap-around issues in Oblique Cylindrical
|
||||
Equal Area. #166.
|
||||
|
||||
o Corrected a coefficient error in inverse Transverse Mercator. #174.
|
||||
|
||||
o Respect -r flag when calling proj with -V. #184.
|
||||
|
||||
o Remove multiplication by 2 at the equator error in Stereographic
|
||||
projection. #194.
|
||||
|
||||
o Allow +alpha=0 and +gamma=0 when using Oblique Mercator. #195.
|
||||
|
||||
o Return correct result of inverse Oblique Mercator when alpha is
|
||||
between 90 and 270. #331.
|
||||
|
||||
o Avoid segmentation fault when accessing point outside grid. #369.
|
||||
|
||||
o Avoid segmentation fault on NaN input in Robin inverse. #463.
|
||||
|
||||
o Very verbose use of proj (-V) on Windows is fixed. #484.
|
||||
|
||||
o Fixed memory leak in General Oblique Transformation. #497.
|
||||
|
||||
o Equations for meridian convergence and partial derivatives have
|
||||
been corrected for non-conformal projections. #526.
|
||||
|
||||
o Fixed scaling of cartesian coordinates in pj_transform(). #726.
|
||||
|
||||
o Additional bug fixes courtesy of Google's OSS-Fuzz program:
|
||||
https://bugs.chromium.org/p/oss-fuzz/issues/list?can=1&q=proj4
|
||||
|
||||
|
||||
DEPRECATIONS
|
||||
------------
|
||||
|
||||
o The projects.h header and the functions related to it is
|
||||
considered deprecated from version 5.0.0 and onwards.
|
||||
|
||||
|
||||
!!! PROJECTS.H WILL BE REMOVED FROM THE LIBRARY !!!
|
||||
!!! WITH VERSION 6.0.0 !!!
|
||||
|
||||
o The nmake build system on Windows will not be supported from
|
||||
version 6.0.0 on onwards. Use CMake instead.
|
||||
|
||||
!!! NMAKE BUILD SYSTEM WILL BE REMOVED FROM THE LIBRARY !!!
|
||||
!!! WITH VERSION 6.0.0 !!!
|
||||
|
||||
o The proj_api.h header and the functions related to it is
|
||||
consided deprecated from version 5.0.0 and onwards.
|
||||
|
||||
!!! PROJ_API.H WILL BE REMOVED FROM THE LIBRARY !!!
|
||||
!!! WITH VERSION 7.0.0 !!!
|
||||
|
||||
|
||||
THANKS TO
|
||||
------------
|
||||
|
||||
Version 5.0.0 is made possible by the following contributors:
|
||||
|
||||
Lukasz Komsta
|
||||
Maxim Churilin
|
||||
edechaux
|
||||
dusanjovic
|
||||
Zoltan Siki
|
||||
Tom Fili
|
||||
Nicolas David
|
||||
Mike Toews
|
||||
Micah Cochran
|
||||
Luke Campbell
|
||||
Ilya Oshchepkov
|
||||
Adam Wulkiewicz
|
||||
Jonas Tittmann
|
||||
Mateusz Loskot
|
||||
Etienne Jacques
|
||||
Bas Couwenberg
|
||||
Elliott Sales de Andrade
|
||||
Charles Karney
|
||||
Aaron Puchert
|
||||
Julien Moquet
|
||||
Charles Karney
|
||||
Howard Butler
|
||||
Even Rouault
|
||||
Thomas Knudsen
|
||||
Kristian Evers
|
||||
|
||||
|
||||
4.9.3 Release Notes
|
||||
-------------------
|
||||
|
||||
o UTM now uses etmerc, following NGA recommendations. Tests adjusted
|
||||
for tiny changes in values.
|
||||
|
||||
o new projections: Times, Natural Earth II, Compact Miller, Patterson
|
||||
Cylindrical, and inverse for Hammer and Eckert-Greifendorff.
|
||||
|
||||
o runtime self tests are now opt-in instead of opt-out
|
||||
|
||||
o math constants moved to projects.h
|
||||
|
||||
o bugfixes
|
||||
|
||||
o New (optional) runtime self tests added to proj
|
||||
|
||||
4.9.2 Release Notes
|
||||
-------------------
|
||||
|
||||
o proj_def.dat was missing from source distribution
|
||||
see https://github.com/OSGeo/proj.4/issues/274 for more detail
|
||||
|
||||
o Update Geodesic library from GeographicLib
|
||||
|
||||
o Remove setlocale() use in pj_init_ctx()
|
||||
|
||||
o Renamed PVALUE in pj_param.c to prevent clash with Windows
|
||||
|
||||
4.9.1 Release Notes
|
||||
-------------------
|
||||
|
||||
o 4.9.0RC2 release was abandoned because it was not promoted in a
|
||||
timely fashion. Subsequent maintenance of tickets has continued,
|
||||
and a new 4.9.1 release was issued in its place.
|
||||
|
||||
o Implement inverse solution for Winkel Tripel from Drazan Tutic #250
|
||||
|
||||
o More CMake configuration tweaks. The CMake configuration is probably
|
||||
not at feature parity with the autotools builds at this point but it
|
||||
is converging #256
|
||||
|
||||
o Tweak initialization ordering around setlocal which may have caused
|
||||
issues #237
|
||||
|
||||
o Support out-of-tree autoconf builds more completely #247
|
||||
|
||||
o Fix NaN handling by geod_inverse and geod_polygon_addedge #251 & #253
|
||||
|
||||
o Update config.sub and config.guess #257
|
||||
|
||||
o Adapt Charles Karney's CMake patches for smoother build #258
|
||||
|
||||
o Define default PROJ_LIB location for CMake compilation #261
|
||||
|
||||
o Fix Windows compilation on PJ_aitoff.c
|
||||
|
||||
o Align CMake SOVERSION with autotools #263
|
||||
|
||||
o Regenerate nad/epsg with GDAL r28536 to avoid precision loss in TOWGS84
|
||||
parameters, e.g. on Amersfoort / RD EPSG:4289 (#260)
|
||||
|
||||
o Add CMake project-config.cmake scripts (#264 from Charles Karney)
|
||||
|
||||
o Dial back test sensitivity #255
|
||||
|
||||
4.9.0 Release Notes
|
||||
-------------------
|
||||
|
||||
o Implement CMake as an option for building PROJ.4
|
||||
|
||||
o Implement new virtual file api (projFileAPI) so that all access to grid
|
||||
shift and init files can be hooked.
|
||||
|
||||
o Replace geodesic implementation with one from Charles Karney and add a
|
||||
supported public interface (geodesic.h).
|
||||
|
||||
o Upgraded to EPSG 8.5.
|
||||
|
||||
o Removed old (deprecated) Java bindings in favor of the new api introduced
|
||||
in 4.8.0.
|
||||
|
||||
o Implement the calcofi (Cal Coop Ocean Fish Invest Lines/Stations) projection
|
||||
|
||||
o Install projects.h again for applications that want access to internal
|
||||
structures and functions despite the inherent fragility.
|
||||
|
||||
o Various bug fixes and cleanup.
|
||||
|
||||
o Added the CalCOFI pseudo-projection, #135
|
||||
|
||||
4.8.0 Release Notes
|
||||
-------------------
|
||||
|
||||
o Added the Natural Earth projection.
|
||||
|
||||
o Added HEALPIX, rHEALPIX and Icosahedral Snyder Equal Area projections.
|
||||
|
||||
o nad2bin now produces "CTable2" format grid shift files by default which
|
||||
are platform independent.
|
||||
|
||||
o nad2nad removed, use cs2cs for datum shift operations.
|
||||
|
||||
o projects.h no longer installed as a public include file. Please try to
|
||||
only use proj_api.h.
|
||||
|
||||
o Add pj_get_spheroid_defn() accessor.
|
||||
|
||||
o Added an alternate version of pj_init() that takes a projCtx (execution
|
||||
context) structure to address multithreading issues with error management
|
||||
and to provide a support for application hookable error reporting and
|
||||
logging.
|
||||
|
||||
o Upgrade to EPSG 7.9. Some changes in ideal datum selection.
|
||||
|
||||
o JNI bindings reworked, org.proj4.Projections deprecated in favor of
|
||||
org.proj4.PJ.
|
||||
|
||||
o Added preliminary vertical datum support.
|
||||
|
||||
o Fix various multithreading issues, particular in datum grid handling code.
|
||||
|
||||
o Added support for the +axis= option for alternate axis orientations as
|
||||
part of a coordinate system (used for TM South Orientated support).
|
||||
|
||||
o +proj=omerc implementatioin replaced with code from libproj4. +rot_conv
|
||||
flag no longer works, and some coordinate systems (ie. Malaysian) will
|
||||
need to use +gamma instead. "epsg" init file updated accordingly.
|
||||
|
||||
|
||||
4.7.0 Release Notes
|
||||
-------------------
|
||||
|
||||
o Added in memory caching of init file search results for substantial
|
||||
acceleration in some application environments (like MapServer).
|
||||
acceleration in some application environments (like MapServer).
|
||||
|
||||
o Regenerated nad/epsg init file with EPSG 7.1 database, including new
|
||||
support for Google Mercator (EPSG:3857).
|
||||
@@ -499,15 +21,15 @@ o The PROJ.4 project also distributes the datum-grid package,
|
||||
if more than 90 degrees away from the central meridian (#5). This change
|
||||
may only be temporary till a more comprehensive solution is found.
|
||||
|
||||
o Fixed handling of extra text in cs2cs.
|
||||
o Fixed handling of extra text in cs2cs.
|
||||
|
||||
o Renamed INSTALL to INSTALL.TXT.
|
||||
|
||||
|
||||
o The eqc projection has been generalized to include a latitude of origin.
|
||||
|
||||
o Added the glabsgm (Gauss Laborde / Sphere Geometric Mean) projection,
|
||||
and gstmerc variation.
|
||||
|
||||
|
||||
o nad/IGNF init catalogue created.
|
||||
|
||||
o added the ntf_r93.gsb datum shift file.
|
||||
@@ -515,9 +37,9 @@ o The PROJ.4 project also distributes the datum-grid package,
|
||||
o Add /Op in nmake.opt compile options to avoid VC7 optimization bug (#12)
|
||||
|
||||
o Fix testvarious test script so it works properly when grid files available
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4.6.0 Release Notes
|
||||
-------------------
|
||||
|
||||
@@ -528,28 +50,28 @@ o The PROJ.4 project also distributes the datum-grid package,
|
||||
ellipsoids getting changed to spheres for spherical projections.
|
||||
|
||||
o Upgrade to EPSG 6.13
|
||||
|
||||
|
||||
o Added "900913" "Google Mercator" code in nad/esri.extra.
|
||||
|
||||
o Avoid some static variable based multi-threading problems.
|
||||
o Avoid some static variable based multi-threading problems.
|
||||
|
||||
o Improve error recovery if ctable style datum shift grid fails to load.
|
||||
|
||||
o Support drive letters properly in PROJ_LIB paths for win32.
|
||||
|
||||
o Fix occasional problem with DMS parsing.
|
||||
|
||||
o Fix occasional problem with DMS parsing.
|
||||
|
||||
o Removed non-functional mpoly projection.
|
||||
|
||||
o add lonlat, and latlon as aliases for longlat.
|
||||
|
||||
o add lonlat, and latlon as aliases for longlat.
|
||||
|
||||
|
||||
4.5.0 Release Notes
|
||||
-------------------
|
||||
|
||||
o Microsoft Visual Studio 8 compatibility changes.
|
||||
|
||||
o Upgraded to EPSG 6.11.1 database.
|
||||
o Microsoft Visual Studio 8 compatibility changes.
|
||||
|
||||
o Upgraded to EPSG 6.11.1 database.
|
||||
|
||||
o Several bug fixes to pj_transform() to handle transient errors properly.
|
||||
|
||||
@@ -564,15 +86,15 @@ o The PROJ.4 project also distributes the datum-grid package,
|
||||
4.4.9 Release Notes
|
||||
-------------------
|
||||
|
||||
o Win32 build uses proj.dll by default now.
|
||||
o Win32 build uses proj.dll by default now.
|
||||
|
||||
o Added accessor functions for the datums, ellps, prime_meridians, units and
|
||||
main projection definition lists so they can be used on windows where
|
||||
main projection definition lists so they can be used on windows where
|
||||
data objects exported from the DLL don't work easily.
|
||||
|
||||
o Added JNI (Java Native Interface) support within the jniwrap directory,
|
||||
o Added JNI (Java Native Interface) support within the jniwrap directory,
|
||||
and some supporting entry points directly in the proj dll/so. See
|
||||
--with-jni configure switch, and jniwrap/README.
|
||||
--with-jni configure switch, and jniwrap/README.
|
||||
|
||||
o Added the proj=stereoa and proj=geos projections, incorporated from
|
||||
Gerald's libproj4.
|
||||
@@ -585,38 +107,38 @@ o The PROJ.4 project also distributes the datum-grid package,
|
||||
|
||||
o Updated epsg file to EPSG 6.5, added other.extra pseudo-EPSG WMS definitions
|
||||
|
||||
o Made significant fixes to prime meridian support.
|
||||
|
||||
o Made significant fixes to prime meridian support.
|
||||
|
||||
o Substantially change pj_datum_transform(), so it and pj_transform() will
|
||||
work between coordinate systems with different ellipsoids but no datum
|
||||
shift information (assume +towgs84=0,0,0).
|
||||
shift information (assume +towgs84=0,0,0).
|
||||
|
||||
o Added pj_get_release() function.
|
||||
|
||||
o Ensure pj_transform() will try to transform all points in provided list if
|
||||
even some might transform properly.
|
||||
o Ensure pj_transform() will try to transform all points in provided list if
|
||||
even some might transform properly.
|
||||
|
||||
o Improved the accuracy of Geocentric_To_Geodetic() via an iterative
|
||||
solution.
|
||||
solution.
|
||||
|
||||
o Various other bug fixes.
|
||||
o Various other bug fixes.
|
||||
|
||||
|
||||
4.4.7 Release Notes
|
||||
-------------------
|
||||
|
||||
o Added NTv2 (.gsb) grid shift file support.
|
||||
o Added NTv2 (.gsb) grid shift file support.
|
||||
|
||||
o Modified datum shift support so that data file data is only loaded if
|
||||
needed. Also added 'null' grid as a fallback option, and support for
|
||||
making grids optional (prefix with '@' in +nadgrids).
|
||||
needed. Also added 'null' grid as a fallback option, and support for
|
||||
making grids optional (prefix with '@' in +nadgrids).
|
||||
|
||||
o Regenerated nad/epsg file with towgs84 parameters for non-greenwich prime
|
||||
o Regenerated nad/epsg file with towgs84 parameters for non-greenwich prime
|
||||
meridians.
|
||||
|
||||
o Updated nad/esri file with better generated form from Paul Ramsey.
|
||||
|
||||
o Various bug fixes.
|
||||
o Various bug fixes.
|
||||
|
||||
|
||||
4.4.6 Release Notes
|
||||
@@ -626,17 +148,17 @@ o The PROJ.4 project also distributes the datum-grid package,
|
||||
Gerald.
|
||||
|
||||
o Updated 'espg' translation file for EPSG 6.2.2 with better support for
|
||||
prime meridians.
|
||||
prime meridians.
|
||||
|
||||
o Added Prime Meridians via +pm command switch to cs2cs (and pj_transform).
|
||||
|
||||
o Fixed bug with 7 parameter transforms.
|
||||
o Fixed bug with 7 parameter transforms.
|
||||
|
||||
o Added 'esri' pseudo-epsg coordinate system file.
|
||||
o Added 'esri' pseudo-epsg coordinate system file.
|
||||
|
||||
o Cleanup so that PROJ.4 compiles clean as C++ code.
|
||||
|
||||
o Added pj_get_def() to expand definitions of stuff like +init clauses.
|
||||
|
||||
o Added a Krovak implementation (proj=krov). Note this may change again
|
||||
in the next release.
|
||||
in the next release.
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
-------------------- P R O J . 4 --------------------
|
||||
|
||||
This is Release 4.4 of cartographic projection software.
|
||||
|
||||
PLEASE read the following information as well as READMEs in the src
|
||||
and nad directories.
|
||||
|
||||
For more information on PROJ.4 maintenance please see the web page at:
|
||||
|
||||
http://www.remotesensing.org/proj
|
||||
or
|
||||
http://proj.maptools.org/
|
||||
|
||||
---------------------------------------------------
|
||||
|
||||
Installation:
|
||||
-------------
|
||||
|
||||
FSF's configuration procedure is used to ease installation of the
|
||||
PROJ.4 system.
|
||||
|
||||
The default destination path prefix for installed files is /usr/local.
|
||||
Results from the installation script will be placed into subdirectories
|
||||
bin, include, lib, man/man1 and man/man3. If this default path prefix
|
||||
is proper, then execute:
|
||||
|
||||
./configure
|
||||
|
||||
If another path prefix is required, then execute:
|
||||
|
||||
./configure --prefix=/my/path
|
||||
|
||||
In either case, the directory of the prefix path must exist and be
|
||||
writable by the installer.
|
||||
|
||||
After executing configure, execute:
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
The install target will create, if necessary, all required sub-directories.
|
||||
|
||||
Windows Build
|
||||
-------------
|
||||
|
||||
PROJ.4 can be built with Microsoft Visual C/C++ using the makefile.vc
|
||||
in the PROJ directory. First edit the PROJ\nmake.opt and modify
|
||||
the INSTDIR value at the top to point to the directory where
|
||||
the PROJ tree shall be installed. If you want to install into
|
||||
C:\PROJ, it can remain unchanged.
|
||||
Then use the makefile.vc to build the software:
|
||||
|
||||
eg.
|
||||
C:\> cd proj
|
||||
C:\PROJ> nmake /f makefile.vc
|
||||
C:\PROJ> nmake /f makefile.vc install-all
|
||||
|
||||
Note that you have to have the VC++ environment variables, and path
|
||||
setup properly. This may involve running the VCVARS32.BAT script out
|
||||
of the Visual C++ tree.
|
||||
|
||||
The makefile.vc builds proj.exe, proj.dll and proj.lib.
|
||||
|
||||
It should also be possible to build using the Unix instructions
|
||||
and Cygwin32, but this hasn't been tested recently.
|
||||
|
||||
|
||||
---------------------------------------------------
|
||||
|
||||
Distribution files and format.
|
||||
------------------------------
|
||||
|
||||
Sources are distributed in one or more files. The principle elements
|
||||
of the system are in a compress tar file named `PROJ.4.x.tar.gz' where
|
||||
"x" will indicate level.sub-level of the release. For U.S. users
|
||||
interested in NADCON datum shifting procedures, additional files
|
||||
containing conversion matricies are distributed with the name
|
||||
`PROJ.4.x.y.tar' where y is an uppercase letter starting with "A."
|
||||
These supplementary files will contain compressed files and thus
|
||||
the tar file is not compressed.
|
||||
|
||||
Interim reports on Rel. 4 proj are available in PostScript form as
|
||||
*.ps.gz . New and old users are strongly recommended to carefully read
|
||||
these manuals. They are supplements and NOT a replacement for the full
|
||||
manual OF 90-284 (which new users should also obtain).
|
||||
|
||||
---------------------------------------------------
|
||||
|
||||
Principle new aspects of system:
|
||||
--------------------------------
|
||||
|
||||
ANSI X3.159-1989 C code. Site must have ANSI C compiler and header files.
|
||||
|
||||
Several method of determining radius from specified ellipsoid.
|
||||
|
||||
Use of initialization files through +init=file:key. Default projection
|
||||
specifications also may be defined in an ASCII file.
|
||||
|
||||
+inv option REMOVED and -I may be used in its place. Use of invproj
|
||||
alias of proj still functions as per Rel.3.
|
||||
|
||||
+ellps=list and +proj=list REMOVED. Use respective -le and -lp.
|
||||
|
||||
+units= to specify cartesian coordinate system units. To get list
|
||||
use -lu.
|
||||
|
||||
-v added to dump final cartographic parameters employed.
|
||||
|
||||
Addition of computing scale factors and angular distortion added through
|
||||
-S option. Valuable for designing new projection parameter details.
|
||||
|
||||
-V option which verbosely lists projected point characteristics.
|
||||
|
||||
Programmers may use projection library with calls to pj_init,
|
||||
pj_fwd, pj_inv and pj_transform.
|
||||
|
||||
Program nad2nad for conversion of data to and from NAD27 and NAD83
|
||||
datums.
|
||||
|
||||
Program cs2cs for converting between coordinate systems, with optional
|
||||
datum translation.
|
||||
|
||||
-------------------------------------------------------------
|
||||
|
||||
Things currently left undone:
|
||||
----------------------------
|
||||
|
||||
proj_def.dat NOT fully in place. Needs additional settings for
|
||||
many of the projections. Probably will not be completed until main
|
||||
manual rewritten.
|
||||
@@ -1,137 +0,0 @@
|
||||
# PROJ
|
||||
|
||||
[](https://travis-ci.org/OSGeo/proj.4)
|
||||
[](https://ci.appveyor.com/project/OSGeo/proj-4)
|
||||
[](https://coveralls.io/github/OSGeo/proj.4?branch=master)
|
||||
|
||||
PROJ is a generic coordinate transformation software, that transforms
|
||||
coordinates from one coordinate reference system (CRS) to another.
|
||||
This includes cartographic projections as well as geodetic transformations.
|
||||
|
||||
For more information on the PROJ.4 project please see the web page at:
|
||||
|
||||
http://proj4.org/
|
||||
|
||||
The PROJ.4 mailing list can be found at:
|
||||
|
||||
http://lists.maptools.org/mailman/listinfo/proj
|
||||
|
||||
See the NEWS file for changes between versions.
|
||||
|
||||
The following command line utilities are included in the PROJ package:
|
||||
|
||||
- proj, for cartographic projection of geodetic coordinates
|
||||
- cs2cs, for transformation from one CRS to another CRS.
|
||||
- geod, for geodesic (great circle) computations.
|
||||
- cct, for generic Coordinate Conversions and Transformations.
|
||||
- gie, the Geospatial Integrity Investigation Environment.
|
||||
|
||||
|
||||
## Installation
|
||||
### Building with CMake
|
||||
|
||||
cd proj
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
cmake --build .
|
||||
|
||||
On Windows, one may need to specify generator:
|
||||
|
||||
cmake -G "Visual Studio 15 2017" ..
|
||||
|
||||
Tests are run with
|
||||
|
||||
ctest
|
||||
|
||||
The test suite requires that the proj-datumgrid package is installed
|
||||
in `PROJ_LIB`.
|
||||
|
||||
### Building on Unix/Linux
|
||||
|
||||
FSF's configuration procedure is used to ease installation of the
|
||||
PROJ system.
|
||||
|
||||
The default destination path prefix for installed files is `/usr/local`.
|
||||
Results from the installation script will be placed into subdirectories
|
||||
`bin`, `include`, `lib`, `man/man1` and `man/man3`.
|
||||
If this default path prefix is proper, then execute:
|
||||
|
||||
./configure
|
||||
|
||||
If another path prefix is required, then execute:
|
||||
|
||||
./configure --prefix=/my/path
|
||||
|
||||
In either case, the directory of the prefix path must exist and be
|
||||
writable by the installer.
|
||||
|
||||
After executing configure, execute:
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
The install target will create, if necessary, all required sub-directories.
|
||||
|
||||
Tests are run with
|
||||
|
||||
make check
|
||||
|
||||
The test suite requires that the proj-datumgrid package is installed
|
||||
in `PROJ_LIB`.
|
||||
|
||||
### Building on Windows with NMAKE
|
||||
|
||||
PROJ can be built with Microsoft Visual C/C++ using the `makefile.vc`
|
||||
in the `PROJ` directory. First edit the `PROJ\nmake.opt` and
|
||||
modify the `INSTDIR` value at the top to point to the directory
|
||||
where the PROJ tree shall be installed.
|
||||
If you want to install into `C:\PROJ`, it can remain unchanged.
|
||||
Then use the `makefile.vc` to build the software e.g.:
|
||||
|
||||
C:\> cd proj
|
||||
C:\PROJ> nmake /f makefile.vc
|
||||
C:\PROJ> nmake /f makefile.vc install-all
|
||||
|
||||
Note that you have to have the VC++ environment variables, and path
|
||||
setup properly. This may involve running the `VCVARS32.BAT`
|
||||
script out of the Visual C++ tree.
|
||||
|
||||
The `makefile.vc` builds `proj.exe`, `proj.dll` and `proj.lib`.
|
||||
|
||||
On Windows you have to set the `PROJ_LIB` environment variable to make
|
||||
sure that PROJ can find the resource files that it needs. For the
|
||||
default install directory you can set `PROJ_LIB` with:
|
||||
|
||||
C:\> set PROJ_LIB=C:\PROJ\share
|
||||
|
||||
|
||||
### Distribution files and format
|
||||
|
||||
Sources are distributed in one or more files. The principle elements
|
||||
of the system are in a compress tar file named `proj-x.y.z.tar.gz` where
|
||||
"x" will indicate major release number, "y" indicates minor release
|
||||
number and "z" indicates the patch number of the release.
|
||||
|
||||
In addition to the PROJ software package, distributions of datum
|
||||
conversion grid files and PROJ parameter files are also available.
|
||||
The grid package is distributed under the name `proj-datumgrid-x.y.zip`,
|
||||
where "x" is the major release version and "y" the minor release
|
||||
version numbers. Similarly regional packages are distributed. The
|
||||
regional packages contain resources that are not essential to the
|
||||
functionality of PROJ but still of value to users in the region
|
||||
specific to the package. All grids that were in proj-datumgrids-1.6
|
||||
remain in proj-datumgrids-1.7; the regional datumgrid files contain
|
||||
grids for datums not previously supported (prior to PROJ 5.0.0).
|
||||
|
||||
The resource packages can be downloaded from the PROJ.4 website.
|
||||
|
||||
More info on the contents of the various resource packages can be
|
||||
found at the
|
||||
[proj-datumgrid GitHub repository](https://github.com/OSGeo/proj-datumgrid).
|
||||
|
||||
The resource file packages should be extracted to `PROJ_LIB`
|
||||
where PROJ will find them after installation. The default location of
|
||||
`PROJ_LIB` on UNIX-based systems is `/usr/local/share/proj` but it may
|
||||
be changed to a different directory. On Windows you have to define
|
||||
`PROJ_LIB` yourself.
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
# $Id$
|
||||
#
|
||||
# Autotools boostrapping script
|
||||
#
|
||||
@@ -26,9 +27,9 @@ if test "$OSTYPE" = "IRIX" -o "$OSTYPE" = "IRIX64"; then
|
||||
fi
|
||||
|
||||
echo "Running aclocal"
|
||||
aclocal -I ./m4 || giveup
|
||||
echo "Running autoheader"
|
||||
autoheader || giveup
|
||||
aclocal || giveup
|
||||
#echo "Running autoheader"
|
||||
#autoheader || giveup
|
||||
echo "Running libtoolize"
|
||||
$LIBTOOLIZE --force --copy || giveup
|
||||
echo "Running automake"
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
# proj-config.cmake for the install tree. It's installed in
|
||||
# ${INSTALL_CMAKE_DIR} and @PROJECT_ROOT_DIR@ is the relative
|
||||
# path to the root from there. (Note that the whole install tree can
|
||||
# be relocated.)
|
||||
file(RELATIVE_PATH PROJECT_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKECONFIGDIR} ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER)
|
||||
configure_file (project-config.cmake.in project-config.cmake @ONLY)
|
||||
configure_file (project-config-version.cmake.in
|
||||
project-config-version.cmake @ONLY)
|
||||
install (FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/project-config.cmake"
|
||||
DESTINATION "${CMAKECONFIGDIR}"
|
||||
RENAME "${PROJECT_NAME_LOWER}-config.cmake")
|
||||
install (FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/project-config-version.cmake"
|
||||
DESTINATION "${CMAKECONFIGDIR}"
|
||||
RENAME "${PROJECT_NAME_LOWER}-config-version.cmake")
|
||||
# Make information about the cmake targets (the library and the tools)
|
||||
# available.
|
||||
install (EXPORT targets
|
||||
FILE ${PROJECT_NAME_LOWER}-targets.cmake
|
||||
DESTINATION "${CMAKECONFIGDIR}")
|
||||
install (EXPORT targets
|
||||
NAMESPACE ${PROJECT_NAME}::
|
||||
FILE ${PROJECT_NAME_LOWER}-namespace-targets.cmake
|
||||
DESTINATION "${CMAKECONFIGDIR}")
|
||||
@@ -1,14 +0,0 @@
|
||||
EXTRA_DIST = CMakeLists.txt \
|
||||
Proj4InstallPath.cmake \
|
||||
Proj4SystemInfo.cmake \
|
||||
Proj4Utilities.cmake \
|
||||
proj_config.cmake.in \
|
||||
Proj4Config.cmake \
|
||||
Proj4Mac.cmake \
|
||||
Proj4Test.cmake \
|
||||
Proj4Version.cmake \
|
||||
policies.cmake \
|
||||
proj_config.cmake.in \
|
||||
project-config-version.cmake.in \
|
||||
project-config.cmake.in
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
################################################################################
|
||||
# SociConfig.cmake - CMake build configuration of SOCI library
|
||||
################################################################################
|
||||
# Copyright (C) 2010 Mateusz Loskot <mateusz@loskot.net>
|
||||
#
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
# http://www.boost.org/LICENSE_1_0.txt)
|
||||
################################################################################
|
||||
include (CheckIncludeFiles)
|
||||
include (CheckLibraryExists)
|
||||
include (CheckFunctionExists)
|
||||
|
||||
# check needed include file
|
||||
check_include_files (dlfcn.h HAVE_DLFCN_H)
|
||||
check_include_files (inttypes.h HAVE_INTTYPES_H)
|
||||
check_include_files (jni.h HAVE_JNI_H)
|
||||
check_include_files (memory.h HAVE_MEMORY_H)
|
||||
check_include_files (stdint.h HAVE_STDINT_H)
|
||||
check_include_files (stdlib.h HAVE_STDLIB_H)
|
||||
check_include_files (string.h HAVE_STRING_H)
|
||||
check_include_files (sys/stat.h HAVE_SYS_STAT_H)
|
||||
check_include_files (sys/types.h HAVE_SYS_TYPES_H)
|
||||
check_include_files (unistd.h HAVE_UNISTD_H)
|
||||
check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
|
||||
|
||||
CHECK_FUNCTION_EXISTS(localeconv HAVE_LOCALECONV)
|
||||
|
||||
# check libm need on unix
|
||||
check_library_exists(m ceil "" HAVE_LIBM)
|
||||
|
||||
set(PACKAGE "proj")
|
||||
set(PACKAGE_BUGREPORT "https://github.com/OSGeo/proj.4/issues")
|
||||
set(PACKAGE_NAME "PROJ.4 Projections")
|
||||
set(PACKAGE_STRING "PROJ.4 Projections ${${PROJECT_INTERN_NAME}_VERSION}")
|
||||
set(PACKAGE_TARNAME "proj")
|
||||
set(PACKAGE_VERSION "${${PROJECT_INTERN_NAME}_VERSION}")
|
||||
|
||||
configure_file(cmake/proj_config.cmake.in src/proj_config.h)
|
||||
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
#----------------------------------------------
|
||||
# installation path settings
|
||||
#----------------------------------------------
|
||||
if(WIN32)
|
||||
if(DEFINED ENV{OSGEO4W_ROOT})
|
||||
set(OSGEO4W_ROOT_DIR $ENV{OSGEO4W_ROOT})
|
||||
else()
|
||||
set(OSGEO4W_ROOT_DIR c:/OSGeo4W)
|
||||
endif()
|
||||
set(DEFAULT_PROJ_ROOT_DIR ${OSGEO4W_ROOT_DIR})
|
||||
endif()
|
||||
if(UNIX)
|
||||
set(DEFAULT_PROJ_ROOT_DIR "/usr/local/")
|
||||
endif(UNIX)
|
||||
|
||||
|
||||
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
SET(CMAKE_INSTALL_PREFIX ${DEFAULT_PROJ_ROOT_DIR} CACHE PATH "Proj.4 install
|
||||
prefix" FORCE)
|
||||
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
|
||||
#TODO
|
||||
# for data install testing the PROJ_LIB envVar
|
||||
|
||||
string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER)
|
||||
if(WIN32)
|
||||
set(DEFAULT_BIN_SUBDIR bin)
|
||||
set(DEFAULT_LIB_SUBDIR local/lib)
|
||||
set(DEFAULT_DATA_SUBDIR share)
|
||||
set(DEFAULT_INCLUDE_SUBDIR local/include)
|
||||
set(DEFAULT_DOC_SUBDIR share/doc/proj)
|
||||
set(DEFAULT_CMAKE_SUBDIR local/lib/cmake/${PROJECT_NAME_LOWER})
|
||||
elseif(UNIX)
|
||||
include(GNUInstallDirs)
|
||||
set(DEFAULT_BIN_SUBDIR ${CMAKE_INSTALL_BINDIR})
|
||||
set(DEFAULT_LIB_SUBDIR ${CMAKE_INSTALL_LIBDIR})
|
||||
set(DEFAULT_DATA_SUBDIR ${CMAKE_INSTALL_DATAROOTDIR}/proj)
|
||||
set(DEFAULT_INCLUDE_SUBDIR ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
set(DEFAULT_DOC_SUBDIR ${CMAKE_INSTALL_DOCDIR})
|
||||
set(DEFAULT_CMAKE_SUBDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME_LOWER})
|
||||
else()
|
||||
# Common locatoins for Unix and Mac OS X
|
||||
set(DEFAULT_BIN_SUBDIR bin)
|
||||
set(DEFAULT_LIB_SUBDIR lib)
|
||||
set(DEFAULT_DATA_SUBDIR share/proj)
|
||||
set(DEFAULT_DOC_SUBDIR doc/proj)
|
||||
set(DEFAULT_INCLUDE_SUBDIR include)
|
||||
set(DEFAULT_DOC_SUBDIR share/doc/proj)
|
||||
set(DEFAULT_CMAKE_SUBDIR lib/cmake/${PROJECT_NAME_LOWER})
|
||||
endif()
|
||||
|
||||
# Locations are changeable by user to customize layout of Proj.4 installation
|
||||
# (default values are platform-specific)
|
||||
set(PROJ_BIN_SUBDIR ${DEFAULT_BIN_SUBDIR} CACHE STRING
|
||||
"Subdirectory where executables will be installed")
|
||||
set(PROJ_LIB_SUBDIR ${DEFAULT_LIB_SUBDIR} CACHE STRING
|
||||
"Subdirectory where libraries will be installed")
|
||||
set(PROJ_INCLUDE_SUBDIR ${DEFAULT_INCLUDE_SUBDIR} CACHE STRING
|
||||
"Subdirectory where header files will be installed")
|
||||
set(PROJ_DATA_SUBDIR ${DEFAULT_DATA_SUBDIR} CACHE STRING
|
||||
"Subdirectory where data will be installed")
|
||||
set(PROJ_DOC_SUBDIR ${DEFAULT_DOC_SUBDIR} CACHE STRING
|
||||
"Subdirectory where doc will be installed")
|
||||
set(PROJ_CMAKE_SUBDIR ${DEFAULT_CMAKE_SUBDIR} CACHE STRING
|
||||
"Subdirectory where cmake proj4-config file will be installed")
|
||||
|
||||
# Mark *DIR variables as advanced and dedicated to use by power-users only.
|
||||
mark_as_advanced(PROJ_ROOT_DIR
|
||||
PROJ_BIN_SUBDIR
|
||||
PROJ_LIB_SUBDIR
|
||||
PROJ_INCLUDE_SUBDIR
|
||||
PROJ_DATA_SUBDIR
|
||||
PROJ_DOC_SUBDIR
|
||||
PROJ_CMAKE_SUBDIR )
|
||||
|
||||
set(DEFAULT_BINDIR "${PROJ_BIN_SUBDIR}")
|
||||
set(DEFAULT_LIBDIR "${PROJ_LIB_SUBDIR}")
|
||||
set(DEFAULT_DATADIR "${PROJ_DATA_SUBDIR}")
|
||||
set(DEFAULT_DOCDIR "${PROJ_DOC_SUBDIR}")
|
||||
set(DEFAULT_INCLUDEDIR "${PROJ_INCLUDE_SUBDIR}")
|
||||
set(DEFAULT_CMAKEDIR "${PROJ_CMAKE_SUBDIR}")
|
||||
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
if(APPLE)
|
||||
set(FRAMEWORKDIR "Library/Frameworks" CACHE PATH "the path to install framework")
|
||||
set(BUNDLEDIR "Applications/OSGEO" CACHE PATH "the path to install bundle")
|
||||
file(RELATIVE_PATH BUNDLE_FRAME_REL_PATH_AAA "/${FRAMEWORKDIR}" "/aaa")
|
||||
string(LENGTH ${BUNDLE_FRAME_REL_PATH_AAA} AAA_LENGTH)
|
||||
math(EXPR RELATIVE_PATH_LENGTH "${AAA_LENGTH}-4")
|
||||
string(SUBSTRING ${BUNDLE_FRAME_REL_PATH_AAA} 0 ${RELATIVE_PATH_LENGTH} BUNDLE_FRAME_REL_PATH)
|
||||
set(PROJ_INSTALL_NAME_DIR "@executable_path/${BUNDLE_FRAME_REL_PATH}/${FRAMEWORKDIR}" )
|
||||
else(APPLE)
|
||||
set(FRAMEWORKDIR "")
|
||||
set(BUNDLEDIR "")
|
||||
set(PROJ_INSTALL_NAME_DIR "")
|
||||
endif(APPLE)
|
||||
|
||||
set(PROJ_RESOURCES "" )
|
||||
|
||||
if(APPLE)
|
||||
option(BUILD_FRAMEWORKS_AND_BUNDLE "if set to ON, build a library framework and application bundle, otherwise install classical UNIX bin/lib" OFF )
|
||||
set(DEFAULT_BINDIR ${BUNDLEDIR})
|
||||
boost_report_value(BUNDLEDIR)
|
||||
boost_report_value(PROJ_INSTALL_NAME_DIR)
|
||||
boost_report_value(FRAMEWORKDIR)
|
||||
endif(APPLE)
|
||||
@@ -1,89 +0,0 @@
|
||||
################################################################################
|
||||
# SociSystemInfo.cmake - part of CMake configuration of Proj.4 library
|
||||
#
|
||||
# Based on idea taken from http://code.google.com/p/softart/ project
|
||||
################################################################################
|
||||
# Copyright (C) 2010 Mateusz Loskot <mateusz@loskot.net>
|
||||
#
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||
# http://www.boost.org/LICENSE_1_0.txt)
|
||||
################################################################################
|
||||
# The following variables are defined:
|
||||
# PROJ_COMPILER_NAME - name of compiler toolset, follows Boost toolset naming.
|
||||
# PROJ_PLATFORM_NAME - target platform name: x64, x86 or win32
|
||||
################################################################################
|
||||
|
||||
set(PROJ_COMPILER_NAME)
|
||||
set(PROJ_PLATFORM_NAME)
|
||||
|
||||
if(MINGW OR UNIX)
|
||||
exec_program(gcc ARGS -dumpversion OUTPUT_VARIABLE GCC_VERSION)
|
||||
string(REPLACE "." "" GCC_VERSION_STR_FULL ${GCC_VERSION})
|
||||
string(REGEX MATCH "[0-9]+\\.[0-9]+" GCC_VERSION_MAJOR_MINOR ${GCC_VERSION})
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
# Compilers, taken from http://predef.sourceforge.net/precomp.html#sec34
|
||||
if(MSVC)
|
||||
if(MSVC_VERSION EQUAL 1200)
|
||||
set(PROJ_COMPILER_NAME "msvc-6.0")
|
||||
endif()
|
||||
if(MSVC_VERSION EQUAL 1300)
|
||||
set(PROJ_COMPILER_NAME "msvc-7.0")
|
||||
endif()
|
||||
if(MSVC_VERSION EQUAL 1310)
|
||||
set(PROJ_COMPILER_NAME "msvc-7.1") #Visual Studio 2003
|
||||
endif()
|
||||
if(MSVC_VERSION EQUAL 1400)
|
||||
set(PROJ_COMPILER_NAME "msvc-8.0") #Visual Studio 2005
|
||||
endif()
|
||||
if(MSVC_VERSION EQUAL 1500)
|
||||
set(PROJ_COMPILER_NAME "msvc-9.0") #Visual Studio 2008
|
||||
endif()
|
||||
if(MSVC_VERSION EQUAL 1600)
|
||||
set(PROJ_COMPILER_NAME "msvc-10.0") #Visual Studio 2010
|
||||
endif()
|
||||
if(MSVC_VERSION EQUAL 1700)
|
||||
set(PROJ_COMPILER_NAME "msvc-11.0") #Visual Studio 2012
|
||||
endif()
|
||||
if(MSVC_VERSION EQUAL 1800)
|
||||
set(PROJ_COMPILER_NAME "msvc-12.0") #Visual Studio 2013
|
||||
endif()
|
||||
if(MSVC_VERSION EQUAL 1900) # CMake 3.1+
|
||||
set(PROJ_COMPILER_NAME "msvc-14.0") #Visual Studio 2015
|
||||
endif()
|
||||
if(MSVC_VERSION GREATER 1900 AND MSVC_VERSION LESS 1920) # CMake 3.8+
|
||||
set(PROJ_COMPILER_NAME "msvc-14.1") #Visual Studio 2017
|
||||
endif()
|
||||
endif(MSVC)
|
||||
|
||||
if(MINGW)
|
||||
set(PROJ_COMPILER_NAME "mingw-${GCC_VERSION}")
|
||||
endif( MINGW )
|
||||
|
||||
if(CMAKE_GENERATOR MATCHES "Win64")
|
||||
set(PROJ_PLATFORM_NAME "x64")
|
||||
else()
|
||||
set(PROJ_PLATFORM_NAME "win32")
|
||||
endif()
|
||||
endif(WIN32)
|
||||
|
||||
if(UNIX)
|
||||
set(PROJ_COMPILER_NAME "gcc-${GCC_VERSION}")
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
|
||||
set(PROJ_PLATFORM_NAME "x64")
|
||||
else()
|
||||
set(PROJ_PLATFORM_NAME "x86")
|
||||
endif()
|
||||
endif(UNIX)
|
||||
|
||||
if(NOT PROJ_COMPILER_NAME)
|
||||
colormsg(_RED_ "WARNING:")
|
||||
colormsg(RED "Could not determine compiler toolset name to set PROJ_COMPILER_NAME variable.")
|
||||
endif()
|
||||
|
||||
if(NOT PROJ_COMPILER_NAME)
|
||||
colormsg(_RED_ "WARNING:")
|
||||
colormsg(RED "Could not determine platform name to set PROJ_COMPILER_NAME variable.")
|
||||
endif()
|
||||
@@ -1,45 +0,0 @@
|
||||
#
|
||||
# add test with sh script
|
||||
#
|
||||
|
||||
function(proj_add_test_script_sh SH_NAME BIN_USE)
|
||||
if(UNIX)
|
||||
get_filename_component(testname ${SH_NAME} NAME_WE)
|
||||
|
||||
set(TEST_OK 1)
|
||||
if(ARGV2)
|
||||
set(TEST_OK 0)
|
||||
set(GRID_FULLNAME ${PROJECT_SOURCE_DIR}/nad/${ARGV2})
|
||||
if(EXISTS ${GRID_FULLNAME})
|
||||
set(TEST_OK 1)
|
||||
endif(EXISTS ${GRID_FULLNAME})
|
||||
endif(ARGV2)
|
||||
|
||||
if( CMAKE_VERSION VERSION_LESS 2.8.4 )
|
||||
set(TEST_OK 0)
|
||||
message(STATUS "test with bash script need a cmake version >= 2.8.4")
|
||||
endif()
|
||||
|
||||
if(${TEST_OK})
|
||||
add_test( NAME "${testname}"
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/nad
|
||||
COMMAND ${PROJECT_SOURCE_DIR}/nad/${SH_NAME}
|
||||
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}}
|
||||
)
|
||||
endif(${TEST_OK})
|
||||
|
||||
endif(UNIX)
|
||||
endfunction()
|
||||
|
||||
|
||||
function(proj_add_gie_test TESTNAME TESTCASE)
|
||||
|
||||
set(GIE_BIN "gie")
|
||||
set(TESTFILE ${CMAKE_SOURCE_DIR}/test/${TESTCASE})
|
||||
add_test( NAME ${TESTNAME}
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test
|
||||
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${GIE_BIN}
|
||||
${TESTFILE}
|
||||
)
|
||||
|
||||
endfunction()
|
||||
@@ -1,456 +0,0 @@
|
||||
################################################################################
|
||||
# SociUtilities.cmake - part of CMake configuration of Proj4 library
|
||||
#
|
||||
# Based on BoostUtilities.cmake from CMake configuration for Boost
|
||||
################################################################################
|
||||
# Copyright (C) 2007 Douglas Gregor <doug.gregor@gmail.com>
|
||||
# Copyright (C) 2007 Troy Straszheim
|
||||
# Copyright (C) 2010 Mateusz Loskot <mateusz@loskot.net>
|
||||
#
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# See accompanying file LICENSE_1_0.txt or copy at
|
||||
# http://www.boost.org/LICENSE_1_0.txt
|
||||
################################################################################
|
||||
# Macros in this module:
|
||||
#
|
||||
# list_contains: Determine whether a string value is in a list.
|
||||
#
|
||||
# car: Return the first element in a list
|
||||
#
|
||||
# cdr: Return all but the first element in a list
|
||||
#
|
||||
# parse_arguments: Parse keyword arguments for use in other macros.
|
||||
#
|
||||
# proj_report_directory_property
|
||||
#
|
||||
# proj_target_output_name:
|
||||
#
|
||||
################################################################################
|
||||
|
||||
# This utility macro determines whether a particular string value
|
||||
# occurs within a list of strings:
|
||||
#
|
||||
# list_contains(result string_to_find arg1 arg2 arg3 ... argn)
|
||||
#
|
||||
# This macro sets the variable named by result equal to TRUE if
|
||||
# string_to_find is found anywhere in the following arguments.
|
||||
macro(list_contains var value)
|
||||
set(${var})
|
||||
foreach (value2 ${ARGN})
|
||||
if (${value} STREQUAL ${value2})
|
||||
set(${var} TRUE)
|
||||
endif (${value} STREQUAL ${value2})
|
||||
endforeach (value2)
|
||||
endmacro(list_contains)
|
||||
|
||||
# This utility macro extracts the first argument from the list of
|
||||
# arguments given, and places it into the variable named var.
|
||||
#
|
||||
# car(var arg1 arg2 ...)
|
||||
macro(car var)
|
||||
set(${var} ${ARGV1})
|
||||
endmacro(car)
|
||||
|
||||
# This utility macro extracts all of the arguments given except the
|
||||
# first, and places them into the variable named var.
|
||||
#
|
||||
# car(var arg1 arg2 ...)
|
||||
macro(cdr var junk)
|
||||
set(${var} ${ARGN})
|
||||
endmacro(cdr)
|
||||
|
||||
# The parse_arguments macro will take the arguments of another macro and
|
||||
# define several variables. The first argument to parse_arguments is a
|
||||
# prefix to put on all variables it creates. The second argument is a
|
||||
# list of names, and the third argument is a list of options. Both of
|
||||
# these lists should be quoted. The rest of parse_arguments are
|
||||
# arguments from another macro to be parsed.
|
||||
#
|
||||
# parse_arguments(prefix arg_names options arg1 arg2...)
|
||||
#
|
||||
# For each item in options, parse_arguments will create a variable with
|
||||
# that name, prefixed with prefix_. So, for example, if prefix is
|
||||
# MY_MACRO and options is OPTION1;OPTION2, then parse_arguments will
|
||||
# create the variables MY_MACRO_OPTION1 and MY_MACRO_OPTION2. These
|
||||
# variables will be set to true if the option exists in the command line
|
||||
# or false otherwise.
|
||||
#
|
||||
# For each item in arg_names, parse_arguments will create a variable
|
||||
# with that name, prefixed with prefix_. Each variable will be filled
|
||||
# with the arguments that occur after the given arg_name is encountered
|
||||
# up to the next arg_name or the end of the arguments. All options are
|
||||
# removed from these lists. parse_arguments also creates a
|
||||
# prefix_DEFAULT_ARGS variable containing the list of all arguments up
|
||||
# to the first arg_name encountered.
|
||||
macro(parse_arguments prefix arg_names option_names)
|
||||
set(DEFAULT_ARGS)
|
||||
foreach(arg_name ${arg_names})
|
||||
set(${prefix}_${arg_name})
|
||||
endforeach(arg_name)
|
||||
foreach(option ${option_names})
|
||||
set(${prefix}_${option} FALSE)
|
||||
endforeach(option)
|
||||
|
||||
set(current_arg_name DEFAULT_ARGS)
|
||||
set(current_arg_list)
|
||||
foreach(arg ${ARGN})
|
||||
list_contains(is_arg_name ${arg} ${arg_names})
|
||||
if (is_arg_name)
|
||||
set(${prefix}_${current_arg_name} ${current_arg_list})
|
||||
set(current_arg_name ${arg})
|
||||
set(current_arg_list)
|
||||
else (is_arg_name)
|
||||
list_contains(is_option ${arg} ${option_names})
|
||||
if (is_option)
|
||||
set(${prefix}_${arg} TRUE)
|
||||
else (is_option)
|
||||
set(current_arg_list ${current_arg_list} ${arg})
|
||||
endif (is_option)
|
||||
endif (is_arg_name)
|
||||
endforeach(arg)
|
||||
set(${prefix}_${current_arg_name} ${current_arg_list})
|
||||
endmacro(parse_arguments)
|
||||
|
||||
# Perform a reverse topological sort on the given LIST.
|
||||
#
|
||||
# topological_sort(my_list "MY_" "_EDGES")
|
||||
#
|
||||
# LIST is the name of a variable containing a list of elements to be
|
||||
# sorted in reverse topological order. Each element in the list has a
|
||||
# set of outgoing edges (for example, those other list elements that
|
||||
# it depends on). In the resulting reverse topological ordering
|
||||
# (written back into the variable named LIST), an element will come
|
||||
# later in the list than any of the elements that can be reached by
|
||||
# following its outgoing edges and the outgoing edges of any vertices
|
||||
# they target, recursively. Thus, if the edges represent dependencies
|
||||
# on build targets, for example, the reverse topological ordering is
|
||||
# the order in which one would build those targets.
|
||||
#
|
||||
# For each element E in this list, the edges for E are contained in
|
||||
# the variable named ${PREFIX}${E}${SUFFIX}, where E is the
|
||||
# upper-cased version of the element in the list. If no such variable
|
||||
# exists, then it is assumed that there are no edges. For example, if
|
||||
# my_list contains a, b, and c, one could provide a dependency graph
|
||||
# using the following variables:
|
||||
#
|
||||
# MY_A_EDGES b
|
||||
# MY_B_EDGES
|
||||
# MY_C_EDGES a b
|
||||
#
|
||||
# With the involcation of topological_sort shown above and these
|
||||
# variables, the resulting reverse topological ordering will be b, a,
|
||||
# c.
|
||||
function(topological_sort LIST PREFIX SUFFIX)
|
||||
# Clear the stack and output variable
|
||||
set(VERTICES "${${LIST}}")
|
||||
set(STACK)
|
||||
set(${LIST})
|
||||
|
||||
# Loop over all of the vertices, starting the topological sort from
|
||||
# each one.
|
||||
foreach(VERTEX ${VERTICES})
|
||||
string(TOUPPER ${VERTEX} UPPER_VERTEX)
|
||||
|
||||
# If we haven't already processed this vertex, start a depth-first
|
||||
# search from where.
|
||||
if (NOT FOUND_${UPPER_VERTEX})
|
||||
# Push this vertex onto the stack with all of its outgoing edges
|
||||
string(REPLACE ";" " " NEW_ELEMENT
|
||||
"${VERTEX};${${PREFIX}${UPPER_VERTEX}${SUFFIX}}")
|
||||
list(APPEND STACK ${NEW_ELEMENT})
|
||||
|
||||
# We've now seen this vertex
|
||||
set(FOUND_${UPPER_VERTEX} TRUE)
|
||||
|
||||
# While the depth-first search stack is not empty
|
||||
list(LENGTH STACK STACK_LENGTH)
|
||||
while(STACK_LENGTH GREATER 0)
|
||||
# Remove the vertex and its remaining out-edges from the top
|
||||
# of the stack
|
||||
list(GET STACK -1 OUT_EDGES)
|
||||
list(REMOVE_AT STACK -1)
|
||||
|
||||
# Get the source vertex and the list of out-edges
|
||||
separate_arguments(OUT_EDGES)
|
||||
list(GET OUT_EDGES 0 SOURCE)
|
||||
list(REMOVE_AT OUT_EDGES 0)
|
||||
|
||||
# While there are still out-edges remaining
|
||||
list(LENGTH OUT_EDGES OUT_DEGREE)
|
||||
while (OUT_DEGREE GREATER 0)
|
||||
# Pull off the first outgoing edge
|
||||
list(GET OUT_EDGES 0 TARGET)
|
||||
list(REMOVE_AT OUT_EDGES 0)
|
||||
|
||||
string(TOUPPER ${TARGET} UPPER_TARGET)
|
||||
if (NOT FOUND_${UPPER_TARGET})
|
||||
# We have not seen the target before, so we will traverse
|
||||
# its outgoing edges before coming back to our
|
||||
# source. This is the key to the depth-first traversal.
|
||||
|
||||
# We've now seen this vertex
|
||||
set(FOUND_${UPPER_TARGET} TRUE)
|
||||
|
||||
# Push the remaining edges for the current vertex onto the
|
||||
# stack
|
||||
string(REPLACE ";" " " NEW_ELEMENT
|
||||
"${SOURCE};${OUT_EDGES}")
|
||||
list(APPEND STACK ${NEW_ELEMENT})
|
||||
|
||||
# Setup the new source and outgoing edges
|
||||
set(SOURCE ${TARGET})
|
||||
string(TOUPPER ${SOURCE} UPPER_SOURCE)
|
||||
set(OUT_EDGES
|
||||
${${PREFIX}${UPPER_SOURCE}${SUFFIX}})
|
||||
endif(NOT FOUND_${UPPER_TARGET})
|
||||
|
||||
list(LENGTH OUT_EDGES OUT_DEGREE)
|
||||
endwhile (OUT_DEGREE GREATER 0)
|
||||
|
||||
# We have finished all of the outgoing edges for
|
||||
# SOURCE; add it to the resulting list.
|
||||
list(APPEND ${LIST} ${SOURCE})
|
||||
|
||||
# Check the length of the stack
|
||||
list(LENGTH STACK STACK_LENGTH)
|
||||
endwhile(STACK_LENGTH GREATER 0)
|
||||
endif (NOT FOUND_${UPPER_VERTEX})
|
||||
endforeach(VERTEX)
|
||||
|
||||
set(${LIST} ${${LIST}} PARENT_SCOPE)
|
||||
endfunction(topological_sort)
|
||||
|
||||
# Small little hack that tweaks a component name (as used for CPack)
|
||||
# to make sure to avoid certain names that cause problems. Sets the
|
||||
# variable named varname to the "sanitized" name.
|
||||
#
|
||||
# FIXME: This is a complete hack. We probably need to fix the CPack
|
||||
# generators (NSIS in particular) to get rid of the need for this.
|
||||
macro(fix_cpack_component_name varname name)
|
||||
if (${name} STREQUAL "foreach")
|
||||
set(${varname} "boost_foreach")
|
||||
else()
|
||||
set(${varname} ${name})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
#
|
||||
# A big shout out to the cmake gurus @ compiz
|
||||
#
|
||||
|
||||
function (colormsg)
|
||||
string (ASCII 27 _escape)
|
||||
set(WHITE "29")
|
||||
set(GRAY "30")
|
||||
set(RED "31")
|
||||
set(GREEN "32")
|
||||
set(YELLOW "33")
|
||||
set(BLUE "34")
|
||||
set(MAG "35")
|
||||
set(CYAN "36")
|
||||
|
||||
foreach (color WHITE GRAY RED GREEN YELLOW BLUE MAG CYAN)
|
||||
set(HI${color} "1\;${${color}}")
|
||||
set(LO${color} "2\;${${color}}")
|
||||
set(_${color}_ "4\;${${color}}")
|
||||
set(_HI${color}_ "1\;4\;${${color}}")
|
||||
set(_LO${color}_ "2\;4\;${${color}}")
|
||||
endforeach()
|
||||
|
||||
set(str "")
|
||||
set(coloron FALSE)
|
||||
foreach(arg ${ARGV})
|
||||
if (NOT ${${arg}} STREQUAL "")
|
||||
if (CMAKE_COLOR_MAKEFILE)
|
||||
set(str "${str}${_escape}[${${arg}}m")
|
||||
set(coloron TRUE)
|
||||
endif()
|
||||
else()
|
||||
set(str "${str}${arg}")
|
||||
if (coloron)
|
||||
set(str "${str}${_escape}[0m")
|
||||
set(coloron FALSE)
|
||||
endif()
|
||||
set(str "${str} ")
|
||||
endif()
|
||||
endforeach()
|
||||
message(STATUS ${str})
|
||||
endfunction()
|
||||
|
||||
# colormsg("Colors:"
|
||||
# WHITE "white" GRAY "gray" GREEN "green"
|
||||
# RED "red" YELLOW "yellow" BLUE "blue" MAG "mag" CYAN "cyan"
|
||||
# _WHITE_ "white" _GRAY_ "gray" _GREEN_ "green"
|
||||
# _RED_ "red" _YELLOW_ "yellow" _BLUE_ "blue" _MAG_ "mag" _CYAN_ "cyan"
|
||||
# _HIWHITE_ "white" _HIGRAY_ "gray" _HIGREEN_ "green"
|
||||
# _HIRED_ "red" _HIYELLOW_ "yellow" _HIBLUE_ "blue" _HIMAG_ "mag" _HICYAN_ "cyan"
|
||||
# HIWHITE "white" HIGRAY "gray" HIGREEN "green"
|
||||
# HIRED "red" HIYELLOW "yellow" HIBLUE "blue" HIMAG "mag" HICYAN "cyan"
|
||||
# "right?")
|
||||
|
||||
#
|
||||
# pretty-prints the value of a variable so that the
|
||||
# equals signs align
|
||||
#
|
||||
|
||||
function(boost_report_value NAME)
|
||||
string(LENGTH "${NAME}" varlen)
|
||||
# LOG
|
||||
#message(STATUS "boost_report_value: NAME=${NAME} (${varlen})")
|
||||
#message(STATUS "boost_report_value: \${NAME}=${${NAME}}")
|
||||
math(EXPR padding_len 40-${varlen})
|
||||
string(SUBSTRING " "
|
||||
0 ${padding_len} varpadding)
|
||||
colormsg("${NAME}${varpadding} = ${${NAME}}")
|
||||
endfunction()
|
||||
|
||||
function(trace NAME)
|
||||
if(BOOST_CMAKE_TRACE)
|
||||
string(LENGTH "${NAME}" varlen)
|
||||
math(EXPR padding_len 40-${varlen})
|
||||
string(SUBSTRING "........................................"
|
||||
0 ${padding_len} varpadding)
|
||||
message("${NAME} ${varpadding} ${${NAME}}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
#
|
||||
# pretty-prints the value of a variable so that the
|
||||
# equals signs align
|
||||
#
|
||||
function(boost_report_pretty PRETTYNAME VARNAME)
|
||||
string(LENGTH "${PRETTYNAME}" varlen)
|
||||
math(EXPR padding_len 30-${varlen})
|
||||
string(SUBSTRING " "
|
||||
0 ${padding_len} varpadding)
|
||||
message(STATUS "${PRETTYNAME}${varpadding} = ${${VARNAME}}")
|
||||
endfunction()
|
||||
|
||||
#
|
||||
# assert that ARG is actually a library target
|
||||
#
|
||||
|
||||
macro(dependency_check ARG)
|
||||
trace(ARG)
|
||||
if (NOT "${ARG}" STREQUAL "")
|
||||
get_target_property(deptype ${ARG} TYPE)
|
||||
if(NOT deptype MATCHES ".*_LIBRARY$")
|
||||
set(DEPENDENCY_OKAY FALSE)
|
||||
list(APPEND DEPENDENCY_FAILURES ${ARG})
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Pretty-print of given property of current directory.
|
||||
#
|
||||
macro(proj_report_directory_property PROPNAME)
|
||||
get_directory_property(${PROPNAME} ${PROPNAME})
|
||||
boost_report_value(${PROPNAME})
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# Scans the current directory and returns a list of subdirectories.
|
||||
# Author: Robert Fleming
|
||||
# Source: http://www.cmake.org/pipermail/cmake/2008-February/020114.html
|
||||
#
|
||||
# Third parameter is 1 if you want relative paths returned.
|
||||
# Usage: list_subdirectories(the_list_is_returned_here /path/to/project TRUE)
|
||||
#
|
||||
|
||||
macro(list_subdirectories retval curdir return_relative)
|
||||
file(GLOB sub-dir RELATIVE ${curdir} *)
|
||||
set(list_of_dirs "")
|
||||
foreach(dir ${sub-dir})
|
||||
if(IS_DIRECTORY ${curdir}/${dir})
|
||||
if (${return_relative})
|
||||
set(list_of_dirs ${list_of_dirs} ${dir})
|
||||
else()
|
||||
set(list_of_dirs ${list_of_dirs} ${curdir}/${dir})
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
set(${retval} ${list_of_dirs})
|
||||
endmacro()
|
||||
|
||||
#
|
||||
# Generates output name for given target depending on platform and version.
|
||||
# For instance, on Windows, libraries get ABI version suffix soci_coreXY.{dll|lib}.
|
||||
#
|
||||
|
||||
function(proj_target_output_name TARGET_NAME OUTPUT_NAME)
|
||||
if(NOT DEFINED TARGET_NAME)
|
||||
message(SEND_ERROR "Error, the variable TARGET_NAME is not defined!")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED ${PROJECT_INTERN_NAME}_VERSION)
|
||||
message(SEND_ERROR "Error, the variable ${${PROJECT_INTERN_NAME}_VERSION} is not defined!")
|
||||
endif()
|
||||
|
||||
# On Windows, ABI version is specified using binary file name suffix.
|
||||
# On Unix, suffix is empty and SOVERSION is used instead.
|
||||
if (WIN32)
|
||||
string(LENGTH "${${PROJECT_INTERN_NAME}_ABI_VERSION}" abilen)
|
||||
if(abilen GREATER 0)
|
||||
set(SUFFIX "_${${PROJECT_INTERN_NAME}_ABI_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(${OUTPUT_NAME} ${TARGET_NAME}${SUFFIX} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
|
||||
#
|
||||
# conversion from lla name to lla convert name ( without lla extension)
|
||||
#
|
||||
|
||||
function(proj_lla_output_name LLA_INPUT_NAME LLA_OUTPUT_NAME )
|
||||
get_filename_component(filename ${LLA_INPUT_NAME} NAME_WE)
|
||||
get_filename_component(pathname ${LLA_INPUT_NAME} PATH)
|
||||
set(${LLA_OUTPUT_NAME} ${pathname}/${filename} PARENT_SCOPE)
|
||||
set(${LLA_OUTPUT_NAME} ${pathname}/${filename} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(proj_lla_target_name LLA_INPUT_NAME LLA_TARGET )
|
||||
get_filename_component(filename ${LLA_INPUT_NAME} NAME_WE)
|
||||
set(${LLA_TARGET} ${filename} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
#
|
||||
# in place conversion of lla file to gsb
|
||||
#
|
||||
|
||||
function(proj_convert_grid_lla2gsb GRID_DIRECTORY)
|
||||
set(NAD2BIN_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
set(NAD2BIN_PATH ${NAD2BIN_DIR}/nad2bin${CMAKE_EXECUTABLE_SUFFIX})
|
||||
file(TO_NATIVE_PATH ${NAD2BIN_PATH} NAD2BIN_EXE)
|
||||
file(GLOB LLA_FILES ${${GRID_DIRECTORY}}/*.lla)
|
||||
foreach(LLA ${LLA_FILES} )
|
||||
proj_lla_output_name(${LLA} DEST_FILE)
|
||||
file(TO_NATIVE_PATH ${DEST_FILE} DEST)
|
||||
proj_lla_target_name(${LLA} LLA_TARGET)
|
||||
if(NOT EXISTS ${DEST})
|
||||
add_custom_target( ${LLA_TARGET} ALL
|
||||
COMMAND ${NAD2BIN_EXE} ${DEST} "<" ${LLA}
|
||||
DEPENDS nad2bin )
|
||||
endif(NOT EXISTS ${DEST})
|
||||
endforeach(LLA)
|
||||
endfunction()
|
||||
|
||||
#
|
||||
# add lla output list to an existing file list
|
||||
#
|
||||
|
||||
function(proj_append_lla_output_file LLA_INPUT_FILE FILE_LIST)
|
||||
set(LIST_OUT ${${FILE_LIST}})
|
||||
foreach(LLA ${${LLA_INPUT_FILE}} )
|
||||
proj_lla_output_name(${LLA} DEST_FILE)
|
||||
file(TO_NATIVE_PATH ${DEST_FILE} DEST)
|
||||
set(LIST_OUT ${LIST_OUT} ${DEST_FILE} )
|
||||
endforeach(LLA ${LLA_INPUT_FILE})
|
||||
set(${FILE_LIST} ${LIST_OUT} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
################################################################################
|
||||
# Proj4Version.cmake - part of CMake configuration of Proj4 library
|
||||
################################################################################
|
||||
# Copyright (C) 2010 Mateusz Loskot <mateusz@loskot.net>
|
||||
#
|
||||
# Distributed under the Boost Software License, Version 1.0
|
||||
################################################################################
|
||||
# Macros in this module:
|
||||
#
|
||||
# proj_version - defines version information for PROJ library
|
||||
# (best known as PROJ4 because MAJOR version is 4 since a very long time)
|
||||
################################################################################
|
||||
|
||||
# Defines version information for PROJ library
|
||||
#
|
||||
# proj_version(MAJOR major_version MINOR minor_version PATCH patch_level)
|
||||
#
|
||||
# MAJOR.MINOR version is used to set SOVERSION
|
||||
#
|
||||
|
||||
macro(proj_version)
|
||||
parse_arguments(THIS_VERSION "MAJOR;MINOR;PATCH;"
|
||||
""
|
||||
${ARGN})
|
||||
|
||||
# Set version components
|
||||
set(${PROJECT_INTERN_NAME}_VERSION_MAJOR ${THIS_VERSION_MAJOR})
|
||||
set(${PROJECT_INTERN_NAME}_VERSION_MINOR ${THIS_VERSION_MINOR})
|
||||
set(${PROJECT_INTERN_NAME}_VERSION_PATCH ${THIS_VERSION_PATCH})
|
||||
|
||||
# Set VERSION string
|
||||
set(${PROJECT_INTERN_NAME}_VERSION
|
||||
"${${PROJECT_INTERN_NAME}_VERSION_MAJOR}.${${PROJECT_INTERN_NAME}_VERSION_MINOR}.${${PROJECT_INTERN_NAME}_VERSION_PATCH}")
|
||||
|
||||
# Set ABI version string used to name binary output
|
||||
# On Windows, ABI version is specified using binary file name suffix.
|
||||
if(WIN32)
|
||||
set(${PROJECT_INTERN_NAME}_ABI_VERSION
|
||||
"${${PROJECT_INTERN_NAME}_VERSION_MAJOR}_${${PROJECT_INTERN_NAME}_VERSION_MINOR}")
|
||||
endif()
|
||||
|
||||
message(STATUS "")
|
||||
boost_report_value(${PROJECT_INTERN_NAME}_VERSION)
|
||||
if(WIN32)
|
||||
boost_report_value(${PROJECT_INTERN_NAME}_ABI_VERSION)
|
||||
endif(WIN32)
|
||||
endmacro()
|
||||
@@ -1,4 +0,0 @@
|
||||
if (CMAKE_MAJOR_VERSION GREATER 2)
|
||||
cmake_policy(SET CMP0042 NEW) # osx rpath
|
||||
cmake_policy(SET CMP0011 NEW) # policy setting
|
||||
endif()
|
||||
@@ -1,48 +0,0 @@
|
||||
# Version checking for @PROJECT_NAME@
|
||||
|
||||
set (PACKAGE_VERSION "@PROJ_VERSION@")
|
||||
set (PACKAGE_VERSION_MAJOR "@PROJ_VERSION_MAJOR@")
|
||||
set (PACKAGE_VERSION_MINOR "@PROJ_VERSION_MINOR@")
|
||||
set (PACKAGE_VERSION_PATCH "@PROJ_VERSION_PATCH@")
|
||||
|
||||
if (NOT PACKAGE_FIND_NAME STREQUAL "@PROJECT_NAME@")
|
||||
# Check package name (in particular, because of the way cmake finds
|
||||
# package config files, the capitalization could easily be "wrong").
|
||||
# This is necessary to ensure that the automatically generated
|
||||
# variables, e.g., <package>_FOUND, are consistently spelled.
|
||||
set (REASON "package = @PROJECT_NAME@, NOT ${PACKAGE_FIND_NAME}")
|
||||
set (PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||
elseif (NOT (APPLE OR (NOT DEFINED CMAKE_SIZEOF_VOID_P) OR
|
||||
CMAKE_SIZEOF_VOID_P EQUAL @CMAKE_SIZEOF_VOID_P@))
|
||||
# Reject if there's a 32-bit/64-bit mismatch (not necessary with Apple
|
||||
# since a multi-architecture library is built for that platform).
|
||||
set (REASON "sizeof(*void) = @CMAKE_SIZEOF_VOID_P@")
|
||||
set (PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||
elseif (MSVC AND NOT MSVC_VERSION STREQUAL "@MSVC_VERSION@")
|
||||
# Reject if there's a mismatch in MSVC compiler versions
|
||||
set (REASON "_MSC_VER = @MSVC_VERSION@")
|
||||
set (PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||
elseif (NOT CMAKE_CROSSCOMPILING STREQUAL "@CMAKE_CROSSCOMPILING@")
|
||||
# Reject if there's a mismatch in ${CMAKE_CROSSCOMPILING}
|
||||
set (REASON "cross-compiling = @CMAKE_CROSSCOMPILING@")
|
||||
set (PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||
elseif (CMAKE_CROSSCOMPILING AND
|
||||
NOT (CMAKE_SYSTEM_NAME STREQUAL "@CMAKE_SYSTEM_NAME@" AND
|
||||
CMAKE_SYSTEM_PROCESSOR STREQUAL "@CMAKE_SYSTEM_PROCESSOR@"))
|
||||
# Reject if cross-compiling and there's a mismatch in the target system
|
||||
set (REASON "target = @CMAKE_SYSTEM_NAME@-@CMAKE_SYSTEM_PROCESSOR@")
|
||||
set (PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||
elseif (PACKAGE_FIND_VERSION)
|
||||
if (PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
|
||||
set (PACKAGE_VERSION_EXACT TRUE)
|
||||
elseif (PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION
|
||||
AND PACKAGE_FIND_VERSION_MAJOR EQUAL PACKAGE_VERSION_MAJOR)
|
||||
set (PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
# If unsuitable, append the reason to the package version so that it's
|
||||
# visible to the user.
|
||||
if (PACKAGE_VERSION_UNSUITABLE)
|
||||
set (PACKAGE_VERSION "${PACKAGE_VERSION} (${REASON})")
|
||||
endif ()
|
||||
@@ -1,32 +0,0 @@
|
||||
# Configure @PROJECT_NAME@
|
||||
#
|
||||
# Set
|
||||
# @PROJECT_NAME@_FOUND = 1
|
||||
# @PROJECT_NAME@_INCLUDE_DIRS = /usr/local/include
|
||||
# @PROJECT_NAME@_LIBRARIES = proj
|
||||
# @PROJECT_NAME@_LIBRARY_DIRS = /usr/local/lib
|
||||
# @PROJECT_NAME@_BINARY_DIRS = /usr/local/bin
|
||||
# @PROJECT_NAME@_VERSION = 4.9.1 (for example)
|
||||
|
||||
message (STATUS "Reading ${CMAKE_CURRENT_LIST_FILE}")
|
||||
# @PROJECT_NAME@_VERSION is set by version file
|
||||
message (STATUS
|
||||
"@PROJECT_NAME@ configuration, version ${@PROJECT_NAME@_VERSION}")
|
||||
|
||||
# Tell the user project where to find our headers and libraries
|
||||
get_filename_component (_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
|
||||
get_filename_component (_ROOT "${_DIR}/@PROJECT_ROOT_DIR@" ABSOLUTE)
|
||||
set (@PROJECT_NAME@_INCLUDE_DIRS "${_ROOT}/@INCLUDEDIR@")
|
||||
set (@PROJECT_NAME@_LIBRARY_DIRS "${_ROOT}/@LIBDIR@")
|
||||
set (@PROJECT_NAME@_BINARY_DIRS "${_ROOT}/@BINDIR@")
|
||||
|
||||
set (@PROJECT_NAME@_LIBRARIES proj)
|
||||
# Read in the exported definition of the library
|
||||
include ("${_DIR}/@PROJECT_NAME_LOWER@-targets.cmake")
|
||||
include ("${_DIR}/@PROJECT_NAME_LOWER@-namespace-targets.cmake")
|
||||
|
||||
unset (_ROOT)
|
||||
unset (_DIR)
|
||||
|
||||
# For backward compatibility with old releases of libgeotiff
|
||||
set (@PROJECT_NAME@_INCLUDE_DIR ${@PROJECT_NAME@_INCLUDE_DIRS})
|
||||
@@ -0,0 +1,72 @@
|
||||
// COMTest1.cpp : Implementation of DLL Exports.
|
||||
|
||||
|
||||
// Note: Proxy/Stub Information
|
||||
// To build a separate proxy/stub DLL,
|
||||
// run nmake -f COMTest1ps.mk in the project directory.
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include <initguid.h>
|
||||
#include "COMTest1.h"
|
||||
|
||||
#include "COMTest1_i.c"
|
||||
#include "ProjDef.h"
|
||||
|
||||
|
||||
CComModule _Module;
|
||||
|
||||
BEGIN_OBJECT_MAP(ObjectMap)
|
||||
OBJECT_ENTRY(CLSID_ProjDef, CProjDef)
|
||||
END_OBJECT_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// DLL Entry Point
|
||||
|
||||
extern "C"
|
||||
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
|
||||
{
|
||||
if (dwReason == DLL_PROCESS_ATTACH)
|
||||
{
|
||||
_Module.Init(ObjectMap, hInstance, &LIBID_PROJ4Lib);
|
||||
DisableThreadLibraryCalls(hInstance);
|
||||
}
|
||||
else if (dwReason == DLL_PROCESS_DETACH)
|
||||
_Module.Term();
|
||||
return TRUE; // ok
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Used to determine whether the DLL can be unloaded by OLE
|
||||
|
||||
STDAPI DllCanUnloadNow(void)
|
||||
{
|
||||
return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Returns a class factory to create an object of the requested type
|
||||
|
||||
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
|
||||
{
|
||||
return _Module.GetClassObject(rclsid, riid, ppv);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// DllRegisterServer - Adds entries to the system registry
|
||||
|
||||
STDAPI DllRegisterServer(void)
|
||||
{
|
||||
// registers object, typelib and all interfaces in typelib
|
||||
return _Module.RegisterServer(TRUE);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// DllUnregisterServer - Removes entries from the system registry
|
||||
|
||||
STDAPI DllUnregisterServer(void)
|
||||
{
|
||||
return _Module.UnregisterServer(TRUE);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
; COMTest1.def : Declares the module parameters.
|
||||
|
||||
LIBRARY "PROJ4COM.DLL"
|
||||
|
||||
EXPORTS
|
||||
DllCanUnloadNow @1 PRIVATE
|
||||
DllGetClassObject @2 PRIVATE
|
||||
DllRegisterServer @3 PRIVATE
|
||||
DllUnregisterServer @4 PRIVATE
|
||||
@@ -0,0 +1,350 @@
|
||||
# Microsoft Developer Studio Project File - Name="COMTest1" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
||||
|
||||
CFG=COMTest1 - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "COMTest1.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "COMTest1.mak" CFG="COMTest1 - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "COMTest1 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "COMTest1 - Win32 Unicode Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "COMTest1 - Win32 Release MinSize" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "COMTest1 - Win32 Release MinDependency" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "COMTest1 - Win32 Unicode Release MinSize" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "COMTest1 - Win32 Unicode Release MinDependency" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "COMTest1 - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "C:\warmerda\proj\src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib C:\warmerda\proj\src\proj_i.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug/PROJ4COM.dll" /pdbtype:sept
|
||||
# Begin Custom Build - Performing registration
|
||||
OutDir=.\Debug
|
||||
TargetPath=.\Debug\PROJ4COM.dll
|
||||
InputPath=.\Debug\PROJ4COM.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
regsvr32 /s /c "$(TargetPath)"
|
||||
echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "DebugU"
|
||||
# PROP BASE Intermediate_Dir "DebugU"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "DebugU"
|
||||
# PROP Intermediate_Dir "DebugU"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
|
||||
# Begin Custom Build - Performing registration
|
||||
OutDir=.\DebugU
|
||||
TargetPath=.\DebugU\COMTest1.dll
|
||||
InputPath=.\DebugU\COMTest1.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
if "%OS%"=="" goto NOTNT
|
||||
if not "%OS%"=="Windows_NT" goto NOTNT
|
||||
regsvr32 /s /c "$(TargetPath)"
|
||||
echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
|
||||
goto end
|
||||
:NOTNT
|
||||
echo Warning : Cannot register Unicode DLL on Windows 95
|
||||
:end
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Release MinSize"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "ReleaseMinSize"
|
||||
# PROP BASE Intermediate_Dir "ReleaseMinSize"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "ReleaseMinSize"
|
||||
# PROP Intermediate_Dir "ReleaseMinSize"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# Begin Custom Build - Performing registration
|
||||
OutDir=.\ReleaseMinSize
|
||||
TargetPath=.\ReleaseMinSize\COMTest1.dll
|
||||
InputPath=.\ReleaseMinSize\COMTest1.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
regsvr32 /s /c "$(TargetPath)"
|
||||
echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Release MinDependency"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "ReleaseMinDependency"
|
||||
# PROP BASE Intermediate_Dir "ReleaseMinDependency"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "ReleaseMinDependency"
|
||||
# PROP Intermediate_Dir "ReleaseMinDependency"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# Begin Custom Build - Performing registration
|
||||
OutDir=.\ReleaseMinDependency
|
||||
TargetPath=.\ReleaseMinDependency\COMTest1.dll
|
||||
InputPath=.\ReleaseMinDependency\COMTest1.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
regsvr32 /s /c "$(TargetPath)"
|
||||
echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Release MinSize"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "ReleaseUMinSize"
|
||||
# PROP BASE Intermediate_Dir "ReleaseUMinSize"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "ReleaseUMinSize"
|
||||
# PROP Intermediate_Dir "ReleaseUMinSize"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# Begin Custom Build - Performing registration
|
||||
OutDir=.\ReleaseUMinSize
|
||||
TargetPath=.\ReleaseUMinSize\COMTest1.dll
|
||||
InputPath=.\ReleaseUMinSize\COMTest1.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
if "%OS%"=="" goto NOTNT
|
||||
if not "%OS%"=="Windows_NT" goto NOTNT
|
||||
regsvr32 /s /c "$(TargetPath)"
|
||||
echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
|
||||
goto end
|
||||
:NOTNT
|
||||
echo Warning : Cannot register Unicode DLL on Windows 95
|
||||
:end
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Release MinDependency"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "ReleaseUMinDependency"
|
||||
# PROP BASE Intermediate_Dir "ReleaseUMinDependency"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "ReleaseUMinDependency"
|
||||
# PROP Intermediate_Dir "ReleaseUMinDependency"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
|
||||
# Begin Custom Build - Performing registration
|
||||
OutDir=.\ReleaseUMinDependency
|
||||
TargetPath=.\ReleaseUMinDependency\COMTest1.dll
|
||||
InputPath=.\ReleaseUMinDependency\COMTest1.dll
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
if "%OS%"=="" goto NOTNT
|
||||
if not "%OS%"=="Windows_NT" goto NOTNT
|
||||
regsvr32 /s /c "$(TargetPath)"
|
||||
echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
|
||||
goto end
|
||||
:NOTNT
|
||||
echo Warning : Cannot register Unicode DLL on Windows 95
|
||||
:end
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "COMTest1 - Win32 Debug"
|
||||
# Name "COMTest1 - Win32 Unicode Debug"
|
||||
# Name "COMTest1 - Win32 Release MinSize"
|
||||
# Name "COMTest1 - Win32 Release MinDependency"
|
||||
# Name "COMTest1 - Win32 Unicode Release MinSize"
|
||||
# Name "COMTest1 - Win32 Unicode Release MinDependency"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\COMTest1.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\COMTest1.def
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\COMTest1.idl
|
||||
|
||||
!IF "$(CFG)" == "COMTest1 - Win32 Debug"
|
||||
|
||||
# ADD MTL /tlb ".\PROJ4COM.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Debug"
|
||||
|
||||
# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Release MinSize"
|
||||
|
||||
# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Release MinDependency"
|
||||
|
||||
# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Release MinSize"
|
||||
|
||||
# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
|
||||
|
||||
!ELSEIF "$(CFG)" == "COMTest1 - Win32 Unicode Release MinDependency"
|
||||
|
||||
# ADD MTL /tlb ".\COMTest1.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf
|
||||
|
||||
!ENDIF
|
||||
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\COMTest1.rc
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ProjDef.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAfx.cpp
|
||||
# ADD CPP /Yc"stdafx.h"
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ProjDef.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Resource.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAfx.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ProjDef.rgs
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "COMTest1"=.\COMTest1.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
// COMTest1.idl : IDL source for COMTest1.dll
|
||||
//
|
||||
|
||||
// This file will be processed by the MIDL tool to
|
||||
// produce the type library (COMTest1.tlb) and marshalling code.
|
||||
|
||||
import "oaidl.idl";
|
||||
import "ocidl.idl";
|
||||
[
|
||||
object,
|
||||
uuid(28849AA6-E8FB-4077-8D7A-D83CDFC2DC44),
|
||||
dual,
|
||||
helpstring("IProjDef Interface"),
|
||||
pointer_default(unique)
|
||||
]
|
||||
interface IProjDef : IDispatch
|
||||
{
|
||||
[id(1), helpstring("method Initialize")] HRESULT Initialize([in] BSTR proj_string, [out, retval] int *success );
|
||||
[id(2), helpstring("method TransformPoint3D")] HRESULT TransformPoint3D([in] IUnknown *srcProj,
|
||||
[in,out] double *x, [in, out] double *y, [in, out] double *z, [out, retval] int *success );
|
||||
[id(3), helpstring("method GetHandle")] HRESULT GetHandle([out, retval] long *pHandle );
|
||||
[id(4), helpstring("method IsLatLong")] HRESULT IsLatLong([out, retval] int *result);
|
||||
[id(5), helpstring("method GetLastError")] HRESULT GetLastError([out, retval] BSTR *error );
|
||||
};
|
||||
|
||||
[
|
||||
uuid(A0ADE3D8-9A85-4BD3-AD56-BFEF42495130),
|
||||
version(1.0),
|
||||
helpstring("PROJ.4")
|
||||
]
|
||||
library PROJ4Lib
|
||||
{
|
||||
importlib("stdole32.tlb");
|
||||
importlib("stdole2.tlb");
|
||||
|
||||
[
|
||||
uuid(B9B8F0A3-D9F8-4537-9A03-329DC9AE144C),
|
||||
helpstring("ProjDef Class")
|
||||
]
|
||||
coclass ProjDef
|
||||
{
|
||||
[default] interface IProjDef;
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,89 @@
|
||||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: COMTest1 - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating command line "midl.exe /tlb ".\PROJ4COM.tlb" /h "COMTest1.h" /iid "COMTest1_i.c" /Oicf "C:\warmerda\proj\com\COMTest1.idl""
|
||||
Creating command line "rc.exe /l 0x409 /fo"Debug/COMTest1.res" /d "_DEBUG" "C:\warmerda\proj\com\COMTest1.rc""
|
||||
Creating temporary file "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2F4.tmp" with contents
|
||||
[
|
||||
/nologo /MTd /W3 /Gm /ZI /Od /I "C:\warmerda\proj\src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"Debug/COMTest1.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
|
||||
"C:\warmerda\proj\com\COMTest1.cpp"
|
||||
"C:\warmerda\proj\com\ProjDef.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2F4.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2F5.tmp" with contents
|
||||
[
|
||||
/nologo /MTd /W3 /Gm /ZI /Od /I "C:\warmerda\proj\src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"Debug/COMTest1.pch" /Yc"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c
|
||||
"C:\warmerda\proj\com\StdAfx.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2F5.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2F6.tmp" with contents
|
||||
[
|
||||
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib C:\warmerda\proj\src\proj_i.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"Debug/PROJ4COM.pdb" /debug /machine:I386 /def:".\COMTest1.def" /out:"Debug/PROJ4COM.dll" /implib:"Debug/PROJ4COM.lib" /pdbtype:sept
|
||||
.\Debug\COMTest1.obj
|
||||
.\Debug\ProjDef.obj
|
||||
.\Debug\StdAfx.obj
|
||||
.\Debug\COMTest1.res
|
||||
]
|
||||
Creating command line "link.exe @C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2F6.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2F7.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
regsvr32 /s /c ".\Debug\PROJ4COM.dll"
|
||||
echo regsvr32 exec. time > ".\Debug\regsvr32.trg"
|
||||
]
|
||||
Creating command line "C:\DOCUME~1\warmerda\LOCALS~1\Temp\RSP2F7.bat"
|
||||
Creating Type Library...
|
||||
Microsoft (R) MIDL Compiler Version 5.01.0164
|
||||
Copyright (c) Microsoft Corp 1991-1997. All rights reserved.
|
||||
Processing C:\warmerda\proj\com\COMTest1.idl
|
||||
COMTest1.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\oaidl.idl
|
||||
oaidl.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\objidl.idl
|
||||
objidl.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\unknwn.idl
|
||||
unknwn.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\wtypes.idl
|
||||
wtypes.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\basetsd.h
|
||||
basetsd.h
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\guiddef.h
|
||||
guiddef.h
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\ocidl.idl
|
||||
ocidl.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\oleidl.idl
|
||||
oleidl.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\servprov.idl
|
||||
servprov.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\urlmon.idl
|
||||
urlmon.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\msxml.idl
|
||||
msxml.idl
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\oaidl.acf
|
||||
oaidl.acf
|
||||
Processing C:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\ocidl.acf
|
||||
ocidl.acf
|
||||
Compiling resources...
|
||||
Compiling...
|
||||
StdAfx.cpp
|
||||
Compiling...
|
||||
COMTest1.cpp
|
||||
ProjDef.cpp
|
||||
Generating Code...
|
||||
Linking...
|
||||
Creating library Debug/PROJ4COM.lib and object Debug/PROJ4COM.exp
|
||||
<h3>Output Window</h3>
|
||||
Performing registration
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
PROJ4COM.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,128 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "winres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""winres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"1 TYPELIB ""COMTest1.tlb""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
#ifndef _MAC
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "Comments", "\0"
|
||||
VALUE "CompanyName", "\0"
|
||||
VALUE "FileDescription", "PROJ.4 COM Module\0"
|
||||
VALUE "FileVersion", "1, 0, 0, 1\0"
|
||||
VALUE "InternalName", "PROJ4\0"
|
||||
VALUE "LegalCopyright", "Copyright 2005\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OLESelfRegister", "\0"
|
||||
VALUE "OriginalFilename", "PROJ4COM.DLL\0"
|
||||
VALUE "PrivateBuild", "\0"
|
||||
VALUE "ProductName", "PROJ.4 COM\0"
|
||||
VALUE "ProductVersion", "1, 0, 0, 1\0"
|
||||
VALUE "SpecialBuild", "\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
#endif // !_MAC
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// REGISTRY
|
||||
//
|
||||
|
||||
IDR_PROJDEF REGISTRY DISCARDABLE "ProjDef.rgs"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
IDS_PROJNAME "PROJ4COM"
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
1 TYPELIB "PROJ4COM.tlb"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
@@ -0,0 +1,571 @@
|
||||
/* this ALWAYS GENERATED file contains the proxy stub code */
|
||||
|
||||
|
||||
/* File created by MIDL compiler version 5.01.0164 */
|
||||
/* at Tue Oct 18 23:21:00 2005
|
||||
*/
|
||||
/* Compiler settings for C:\warmerda\proj\com\COMTest1.idl:
|
||||
Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
|
||||
error checks: allocation ref bounds_check enum stub_data
|
||||
*/
|
||||
//@@MIDL_FILE_HEADING( )
|
||||
|
||||
#define USE_STUBLESS_PROXY
|
||||
|
||||
|
||||
/* verify that the <rpcproxy.h> version is high enough to compile this file*/
|
||||
#ifndef __REDQ_RPCPROXY_H_VERSION__
|
||||
#define __REQUIRED_RPCPROXY_H_VERSION__ 440
|
||||
#endif
|
||||
|
||||
|
||||
#include "rpcproxy.h"
|
||||
#ifndef __RPCPROXY_H_VERSION__
|
||||
#error this stub requires an updated version of <rpcproxy.h>
|
||||
#endif // __RPCPROXY_H_VERSION__
|
||||
|
||||
|
||||
#include "COMTest1.h"
|
||||
|
||||
#define TYPE_FORMAT_STRING_SIZE 81
|
||||
#define PROC_FORMAT_STRING_SIZE 171
|
||||
|
||||
typedef struct _MIDL_TYPE_FORMAT_STRING
|
||||
{
|
||||
short Pad;
|
||||
unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
|
||||
} MIDL_TYPE_FORMAT_STRING;
|
||||
|
||||
typedef struct _MIDL_PROC_FORMAT_STRING
|
||||
{
|
||||
short Pad;
|
||||
unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
|
||||
} MIDL_PROC_FORMAT_STRING;
|
||||
|
||||
|
||||
extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString;
|
||||
extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString;
|
||||
|
||||
|
||||
/* Object interface: IUnknown, ver. 0.0,
|
||||
GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
|
||||
|
||||
|
||||
/* Object interface: IDispatch, ver. 0.0,
|
||||
GUID={0x00020400,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
|
||||
|
||||
|
||||
/* Object interface: IProjDef, ver. 0.0,
|
||||
GUID={0x28849AA6,0xE8FB,0x4077,{0x8D,0x7A,0xD8,0x3C,0xDF,0xC2,0xDC,0x44}} */
|
||||
|
||||
|
||||
extern const MIDL_STUB_DESC Object_StubDesc;
|
||||
|
||||
|
||||
extern const MIDL_SERVER_INFO IProjDef_ServerInfo;
|
||||
|
||||
#pragma code_seg(".orpc")
|
||||
extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[1];
|
||||
|
||||
static const MIDL_STUB_DESC Object_StubDesc =
|
||||
{
|
||||
0,
|
||||
NdrOleAllocate,
|
||||
NdrOleFree,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
__MIDL_TypeFormatString.Format,
|
||||
1, /* -error bounds_check flag */
|
||||
0x20000, /* Ndr library version */
|
||||
0,
|
||||
0x50100a4, /* MIDL Version 5.1.164 */
|
||||
0,
|
||||
UserMarshalRoutines,
|
||||
0, /* notify & notify_flag routine table */
|
||||
1, /* Flags */
|
||||
0, /* Reserved3 */
|
||||
0, /* Reserved4 */
|
||||
0 /* Reserved5 */
|
||||
};
|
||||
|
||||
static const unsigned short IProjDef_FormatStringOffsetTable[] =
|
||||
{
|
||||
(unsigned short) -1,
|
||||
(unsigned short) -1,
|
||||
(unsigned short) -1,
|
||||
(unsigned short) -1,
|
||||
0,
|
||||
34,
|
||||
86,
|
||||
114,
|
||||
142
|
||||
};
|
||||
|
||||
static const MIDL_SERVER_INFO IProjDef_ServerInfo =
|
||||
{
|
||||
&Object_StubDesc,
|
||||
0,
|
||||
__MIDL_ProcFormatString.Format,
|
||||
&IProjDef_FormatStringOffsetTable[-3],
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
};
|
||||
|
||||
static const MIDL_STUBLESS_PROXY_INFO IProjDef_ProxyInfo =
|
||||
{
|
||||
&Object_StubDesc,
|
||||
__MIDL_ProcFormatString.Format,
|
||||
&IProjDef_FormatStringOffsetTable[-3],
|
||||
0,
|
||||
0,
|
||||
0
|
||||
};
|
||||
|
||||
CINTERFACE_PROXY_VTABLE(12) _IProjDefProxyVtbl =
|
||||
{
|
||||
&IProjDef_ProxyInfo,
|
||||
&IID_IProjDef,
|
||||
IUnknown_QueryInterface_Proxy,
|
||||
IUnknown_AddRef_Proxy,
|
||||
IUnknown_Release_Proxy ,
|
||||
0 /* (void *)-1 /* IDispatch::GetTypeInfoCount */ ,
|
||||
0 /* (void *)-1 /* IDispatch::GetTypeInfo */ ,
|
||||
0 /* (void *)-1 /* IDispatch::GetIDsOfNames */ ,
|
||||
0 /* IDispatch_Invoke_Proxy */ ,
|
||||
(void *)-1 /* IProjDef::Initialize */ ,
|
||||
(void *)-1 /* IProjDef::TransformPoint3D */ ,
|
||||
(void *)-1 /* IProjDef::GetHandle */ ,
|
||||
(void *)-1 /* IProjDef::IsLatLong */ ,
|
||||
(void *)-1 /* IProjDef::GetLastError */
|
||||
};
|
||||
|
||||
|
||||
static const PRPC_STUB_FUNCTION IProjDef_table[] =
|
||||
{
|
||||
STUB_FORWARDING_FUNCTION,
|
||||
STUB_FORWARDING_FUNCTION,
|
||||
STUB_FORWARDING_FUNCTION,
|
||||
STUB_FORWARDING_FUNCTION,
|
||||
NdrStubCall2,
|
||||
NdrStubCall2,
|
||||
NdrStubCall2,
|
||||
NdrStubCall2,
|
||||
NdrStubCall2
|
||||
};
|
||||
|
||||
CInterfaceStubVtbl _IProjDefStubVtbl =
|
||||
{
|
||||
&IID_IProjDef,
|
||||
&IProjDef_ServerInfo,
|
||||
12,
|
||||
&IProjDef_table[-3],
|
||||
CStdStubBuffer_DELEGATING_METHODS
|
||||
};
|
||||
|
||||
#pragma data_seg(".rdata")
|
||||
|
||||
static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[1] =
|
||||
{
|
||||
|
||||
{
|
||||
BSTR_UserSize
|
||||
,BSTR_UserMarshal
|
||||
,BSTR_UserUnmarshal
|
||||
,BSTR_UserFree
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
#if !defined(__RPC_WIN32__)
|
||||
#error Invalid build platform for this stub.
|
||||
#endif
|
||||
|
||||
#if !(TARGET_IS_NT40_OR_LATER)
|
||||
#error You need a Windows NT 4.0 or later to run this stub because it uses these features:
|
||||
#error -Oif or -Oicf, [wire_marshal] or [user_marshal] attribute, more than 32 methods in the interface.
|
||||
#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
|
||||
#error This app will die there with the RPC_X_WRONG_STUB_VERSION error.
|
||||
#endif
|
||||
|
||||
|
||||
static const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString =
|
||||
{
|
||||
0,
|
||||
{
|
||||
|
||||
/* Procedure Initialize */
|
||||
|
||||
0x33, /* FC_AUTO_HANDLE */
|
||||
0x6c, /* Old Flags: object, Oi2 */
|
||||
/* 2 */ NdrFcLong( 0x0 ), /* 0 */
|
||||
/* 6 */ NdrFcShort( 0x7 ), /* 7 */
|
||||
#ifndef _ALPHA_
|
||||
/* 8 */ NdrFcShort( 0x10 ), /* x86, MIPS, PPC Stack size/offset = 16 */
|
||||
#else
|
||||
NdrFcShort( 0x20 ), /* Alpha Stack size/offset = 32 */
|
||||
#endif
|
||||
/* 10 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 12 */ NdrFcShort( 0x10 ), /* 16 */
|
||||
/* 14 */ 0x6, /* Oi2 Flags: clt must size, has return, */
|
||||
0x3, /* 3 */
|
||||
|
||||
/* Parameter proj_string */
|
||||
|
||||
/* 16 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */
|
||||
#ifndef _ALPHA_
|
||||
/* 18 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
|
||||
#else
|
||||
NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
|
||||
#endif
|
||||
/* 20 */ NdrFcShort( 0x1a ), /* Type Offset=26 */
|
||||
|
||||
/* Parameter success */
|
||||
|
||||
/* 22 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
|
||||
#ifndef _ALPHA_
|
||||
/* 24 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
|
||||
#else
|
||||
NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
|
||||
#endif
|
||||
/* 26 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Return value */
|
||||
|
||||
/* 28 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
|
||||
#ifndef _ALPHA_
|
||||
/* 30 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
|
||||
#else
|
||||
NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
|
||||
#endif
|
||||
/* 32 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Procedure TransformPoint3D */
|
||||
|
||||
/* 34 */ 0x33, /* FC_AUTO_HANDLE */
|
||||
0x6c, /* Old Flags: object, Oi2 */
|
||||
/* 36 */ NdrFcLong( 0x0 ), /* 0 */
|
||||
/* 40 */ NdrFcShort( 0x8 ), /* 8 */
|
||||
#ifndef _ALPHA_
|
||||
/* 42 */ NdrFcShort( 0x1c ), /* x86, MIPS, PPC Stack size/offset = 28 */
|
||||
#else
|
||||
NdrFcShort( 0x38 ), /* Alpha Stack size/offset = 56 */
|
||||
#endif
|
||||
/* 44 */ NdrFcShort( 0x30 ), /* 48 */
|
||||
/* 46 */ NdrFcShort( 0x40 ), /* 64 */
|
||||
/* 48 */ 0x6, /* Oi2 Flags: clt must size, has return, */
|
||||
0x6, /* 6 */
|
||||
|
||||
/* Parameter srcProj */
|
||||
|
||||
/* 50 */ NdrFcShort( 0xb ), /* Flags: must size, must free, in, */
|
||||
#ifndef _ALPHA_
|
||||
/* 52 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
|
||||
#else
|
||||
NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
|
||||
#endif
|
||||
/* 54 */ NdrFcShort( 0x28 ), /* Type Offset=40 */
|
||||
|
||||
/* Parameter x */
|
||||
|
||||
/* 56 */ NdrFcShort( 0x158 ), /* Flags: in, out, base type, simple ref, */
|
||||
#ifndef _ALPHA_
|
||||
/* 58 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
|
||||
#else
|
||||
NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
|
||||
#endif
|
||||
/* 60 */ 0xc, /* FC_DOUBLE */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Parameter y */
|
||||
|
||||
/* 62 */ NdrFcShort( 0x158 ), /* Flags: in, out, base type, simple ref, */
|
||||
#ifndef _ALPHA_
|
||||
/* 64 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
|
||||
#else
|
||||
NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
|
||||
#endif
|
||||
/* 66 */ 0xc, /* FC_DOUBLE */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Parameter z */
|
||||
|
||||
/* 68 */ NdrFcShort( 0x158 ), /* Flags: in, out, base type, simple ref, */
|
||||
#ifndef _ALPHA_
|
||||
/* 70 */ NdrFcShort( 0x10 ), /* x86, MIPS, PPC Stack size/offset = 16 */
|
||||
#else
|
||||
NdrFcShort( 0x20 ), /* Alpha Stack size/offset = 32 */
|
||||
#endif
|
||||
/* 72 */ 0xc, /* FC_DOUBLE */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Parameter success */
|
||||
|
||||
/* 74 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
|
||||
#ifndef _ALPHA_
|
||||
/* 76 */ NdrFcShort( 0x14 ), /* x86, MIPS, PPC Stack size/offset = 20 */
|
||||
#else
|
||||
NdrFcShort( 0x28 ), /* Alpha Stack size/offset = 40 */
|
||||
#endif
|
||||
/* 78 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Return value */
|
||||
|
||||
/* 80 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
|
||||
#ifndef _ALPHA_
|
||||
/* 82 */ NdrFcShort( 0x18 ), /* x86, MIPS, PPC Stack size/offset = 24 */
|
||||
#else
|
||||
NdrFcShort( 0x30 ), /* Alpha Stack size/offset = 48 */
|
||||
#endif
|
||||
/* 84 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Procedure GetHandle */
|
||||
|
||||
/* 86 */ 0x33, /* FC_AUTO_HANDLE */
|
||||
0x6c, /* Old Flags: object, Oi2 */
|
||||
/* 88 */ NdrFcLong( 0x0 ), /* 0 */
|
||||
/* 92 */ NdrFcShort( 0x9 ), /* 9 */
|
||||
#ifndef _ALPHA_
|
||||
/* 94 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
|
||||
#else
|
||||
NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
|
||||
#endif
|
||||
/* 96 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 98 */ NdrFcShort( 0x10 ), /* 16 */
|
||||
/* 100 */ 0x4, /* Oi2 Flags: has return, */
|
||||
0x2, /* 2 */
|
||||
|
||||
/* Parameter pHandle */
|
||||
|
||||
/* 102 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
|
||||
#ifndef _ALPHA_
|
||||
/* 104 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
|
||||
#else
|
||||
NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
|
||||
#endif
|
||||
/* 106 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Return value */
|
||||
|
||||
/* 108 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
|
||||
#ifndef _ALPHA_
|
||||
/* 110 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
|
||||
#else
|
||||
NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
|
||||
#endif
|
||||
/* 112 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Procedure IsLatLong */
|
||||
|
||||
/* 114 */ 0x33, /* FC_AUTO_HANDLE */
|
||||
0x6c, /* Old Flags: object, Oi2 */
|
||||
/* 116 */ NdrFcLong( 0x0 ), /* 0 */
|
||||
/* 120 */ NdrFcShort( 0xa ), /* 10 */
|
||||
#ifndef _ALPHA_
|
||||
/* 122 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
|
||||
#else
|
||||
NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
|
||||
#endif
|
||||
/* 124 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 126 */ NdrFcShort( 0x10 ), /* 16 */
|
||||
/* 128 */ 0x4, /* Oi2 Flags: has return, */
|
||||
0x2, /* 2 */
|
||||
|
||||
/* Parameter result */
|
||||
|
||||
/* 130 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
|
||||
#ifndef _ALPHA_
|
||||
/* 132 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
|
||||
#else
|
||||
NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
|
||||
#endif
|
||||
/* 134 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Return value */
|
||||
|
||||
/* 136 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
|
||||
#ifndef _ALPHA_
|
||||
/* 138 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
|
||||
#else
|
||||
NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
|
||||
#endif
|
||||
/* 140 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
/* Procedure GetLastError */
|
||||
|
||||
/* 142 */ 0x33, /* FC_AUTO_HANDLE */
|
||||
0x6c, /* Old Flags: object, Oi2 */
|
||||
/* 144 */ NdrFcLong( 0x0 ), /* 0 */
|
||||
/* 148 */ NdrFcShort( 0xb ), /* 11 */
|
||||
#ifndef _ALPHA_
|
||||
/* 150 */ NdrFcShort( 0xc ), /* x86, MIPS, PPC Stack size/offset = 12 */
|
||||
#else
|
||||
NdrFcShort( 0x18 ), /* Alpha Stack size/offset = 24 */
|
||||
#endif
|
||||
/* 152 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 154 */ NdrFcShort( 0x8 ), /* 8 */
|
||||
/* 156 */ 0x5, /* Oi2 Flags: srv must size, has return, */
|
||||
0x2, /* 2 */
|
||||
|
||||
/* Parameter error */
|
||||
|
||||
/* 158 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
|
||||
#ifndef _ALPHA_
|
||||
/* 160 */ NdrFcShort( 0x4 ), /* x86, MIPS, PPC Stack size/offset = 4 */
|
||||
#else
|
||||
NdrFcShort( 0x8 ), /* Alpha Stack size/offset = 8 */
|
||||
#endif
|
||||
/* 162 */ NdrFcShort( 0x46 ), /* Type Offset=70 */
|
||||
|
||||
/* Return value */
|
||||
|
||||
/* 164 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
|
||||
#ifndef _ALPHA_
|
||||
/* 166 */ NdrFcShort( 0x8 ), /* x86, MIPS, PPC Stack size/offset = 8 */
|
||||
#else
|
||||
NdrFcShort( 0x10 ), /* Alpha Stack size/offset = 16 */
|
||||
#endif
|
||||
/* 168 */ 0x8, /* FC_LONG */
|
||||
0x0, /* 0 */
|
||||
|
||||
0x0
|
||||
}
|
||||
};
|
||||
|
||||
static const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString =
|
||||
{
|
||||
0,
|
||||
{
|
||||
NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 2 */
|
||||
0x12, 0x0, /* FC_UP */
|
||||
/* 4 */ NdrFcShort( 0xc ), /* Offset= 12 (16) */
|
||||
/* 6 */
|
||||
0x1b, /* FC_CARRAY */
|
||||
0x1, /* 1 */
|
||||
/* 8 */ NdrFcShort( 0x2 ), /* 2 */
|
||||
/* 10 */ 0x9, /* Corr desc: FC_ULONG */
|
||||
0x0, /* */
|
||||
/* 12 */ NdrFcShort( 0xfffc ), /* -4 */
|
||||
/* 14 */ 0x6, /* FC_SHORT */
|
||||
0x5b, /* FC_END */
|
||||
/* 16 */
|
||||
0x17, /* FC_CSTRUCT */
|
||||
0x3, /* 3 */
|
||||
/* 18 */ NdrFcShort( 0x8 ), /* 8 */
|
||||
/* 20 */ NdrFcShort( 0xfffffff2 ), /* Offset= -14 (6) */
|
||||
/* 22 */ 0x8, /* FC_LONG */
|
||||
0x8, /* FC_LONG */
|
||||
/* 24 */ 0x5c, /* FC_PAD */
|
||||
0x5b, /* FC_END */
|
||||
/* 26 */ 0xb4, /* FC_USER_MARSHAL */
|
||||
0x83, /* 131 */
|
||||
/* 28 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 30 */ NdrFcShort( 0x4 ), /* 4 */
|
||||
/* 32 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 34 */ NdrFcShort( 0xffffffe0 ), /* Offset= -32 (2) */
|
||||
/* 36 */
|
||||
0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
|
||||
/* 38 */ 0x8, /* FC_LONG */
|
||||
0x5c, /* FC_PAD */
|
||||
/* 40 */
|
||||
0x2f, /* FC_IP */
|
||||
0x5a, /* FC_CONSTANT_IID */
|
||||
/* 42 */ NdrFcLong( 0x0 ), /* 0 */
|
||||
/* 46 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 48 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 50 */ 0xc0, /* 192 */
|
||||
0x0, /* 0 */
|
||||
/* 52 */ 0x0, /* 0 */
|
||||
0x0, /* 0 */
|
||||
/* 54 */ 0x0, /* 0 */
|
||||
0x0, /* 0 */
|
||||
/* 56 */ 0x0, /* 0 */
|
||||
0x46, /* 70 */
|
||||
/* 58 */
|
||||
0x11, 0x8, /* FC_RP [simple_pointer] */
|
||||
/* 60 */ 0xc, /* FC_DOUBLE */
|
||||
0x5c, /* FC_PAD */
|
||||
/* 62 */
|
||||
0x11, 0x4, /* FC_RP [alloced_on_stack] */
|
||||
/* 64 */ NdrFcShort( 0x6 ), /* Offset= 6 (70) */
|
||||
/* 66 */
|
||||
0x13, 0x0, /* FC_OP */
|
||||
/* 68 */ NdrFcShort( 0xffffffcc ), /* Offset= -52 (16) */
|
||||
/* 70 */ 0xb4, /* FC_USER_MARSHAL */
|
||||
0x83, /* 131 */
|
||||
/* 72 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 74 */ NdrFcShort( 0x4 ), /* 4 */
|
||||
/* 76 */ NdrFcShort( 0x0 ), /* 0 */
|
||||
/* 78 */ NdrFcShort( 0xfffffff4 ), /* Offset= -12 (66) */
|
||||
|
||||
0x0
|
||||
}
|
||||
};
|
||||
|
||||
const CInterfaceProxyVtbl * _COMTest1_ProxyVtblList[] =
|
||||
{
|
||||
( CInterfaceProxyVtbl *) &_IProjDefProxyVtbl,
|
||||
0
|
||||
};
|
||||
|
||||
const CInterfaceStubVtbl * _COMTest1_StubVtblList[] =
|
||||
{
|
||||
( CInterfaceStubVtbl *) &_IProjDefStubVtbl,
|
||||
0
|
||||
};
|
||||
|
||||
PCInterfaceName const _COMTest1_InterfaceNamesList[] =
|
||||
{
|
||||
"IProjDef",
|
||||
0
|
||||
};
|
||||
|
||||
const IID * _COMTest1_BaseIIDList[] =
|
||||
{
|
||||
&IID_IDispatch,
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
#define _COMTest1_CHECK_IID(n) IID_GENERIC_CHECK_IID( _COMTest1, pIID, n)
|
||||
|
||||
int __stdcall _COMTest1_IID_Lookup( const IID * pIID, int * pIndex )
|
||||
{
|
||||
|
||||
if(!_COMTest1_CHECK_IID(0))
|
||||
{
|
||||
*pIndex = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const ExtendedProxyFileInfo COMTest1_ProxyFileInfo =
|
||||
{
|
||||
(PCInterfaceProxyVtblList *) & _COMTest1_ProxyVtblList,
|
||||
(PCInterfaceStubVtblList *) & _COMTest1_StubVtblList,
|
||||
(const PCInterfaceName * ) & _COMTest1_InterfaceNamesList,
|
||||
(const IID ** ) & _COMTest1_BaseIIDList,
|
||||
& _COMTest1_IID_Lookup,
|
||||
1,
|
||||
2,
|
||||
0, /* table of [async_uuid] interfaces */
|
||||
0, /* Filler1 */
|
||||
0, /* Filler2 */
|
||||
0 /* Filler3 */
|
||||
};
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
LIBRARY "COMTest1PS"
|
||||
|
||||
DESCRIPTION 'Proxy/Stub DLL'
|
||||
|
||||
EXPORTS
|
||||
DllGetClassObject @1 PRIVATE
|
||||
DllCanUnloadNow @2 PRIVATE
|
||||
GetProxyDllInfo @3 PRIVATE
|
||||
DllRegisterServer @4 PRIVATE
|
||||
DllUnregisterServer @5 PRIVATE
|
||||
@@ -0,0 +1,16 @@
|
||||
|
||||
COMTest1ps.dll: dlldata.obj COMTest1_p.obj COMTest1_i.obj
|
||||
link /dll /out:COMTest1ps.dll /def:COMTest1ps.def /entry:DllMain dlldata.obj COMTest1_p.obj COMTest1_i.obj \
|
||||
kernel32.lib rpcndr.lib rpcns4.lib rpcrt4.lib oleaut32.lib uuid.lib \
|
||||
|
||||
.c.obj:
|
||||
cl /c /Ox /DWIN32 /D_WIN32_WINNT=0x0400 /DREGISTER_PROXY_DLL \
|
||||
$<
|
||||
|
||||
clean:
|
||||
@del COMTest1ps.dll
|
||||
@del COMTest1ps.lib
|
||||
@del COMTest1ps.exp
|
||||
@del dlldata.obj
|
||||
@del COMTest1_p.obj
|
||||
@del COMTest1_i.obj
|
||||
@@ -0,0 +1,115 @@
|
||||
// ProjDef.cpp : Implementation of CProjDef
|
||||
#include "stdafx.h"
|
||||
#include "COMTest1.h"
|
||||
#include "ProjDef.h"
|
||||
#include "proj_api.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CProjDef
|
||||
|
||||
|
||||
STDMETHODIMP CProjDef::Initialize(BSTR proj_string, int *success)
|
||||
{
|
||||
USES_CONVERSION;
|
||||
psProj = pj_init_plus( W2A(proj_string) );
|
||||
|
||||
if( psProj != NULL )
|
||||
*success = 1;
|
||||
else
|
||||
{
|
||||
SetProjError( "pj_init_plus failed." );
|
||||
//SetError( (const char *) W2A(proj_string) );
|
||||
*success = 0;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CProjDef::TransformPoint3D(IUnknown *srcProj, double *x, double *y, double *z, int *success)
|
||||
{
|
||||
void *psProjOther;
|
||||
IProjDef *srcProjReal;
|
||||
|
||||
srcProj->QueryInterface( IID_IProjDef, (void **) &srcProjReal );
|
||||
srcProjReal->GetHandle( (long *) &psProjOther );
|
||||
|
||||
if( psProjOther == NULL || psProj == NULL )
|
||||
{
|
||||
SetError( "One of projections not set." );
|
||||
*success = 0;
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
if( pj_is_latlong( psProjOther ) )
|
||||
{
|
||||
*x *= DEG_TO_RAD;
|
||||
*y *= DEG_TO_RAD;
|
||||
}
|
||||
|
||||
*success = pj_transform( psProjOther, psProj, 1, 0, x, y, z ) == 0;
|
||||
if( ! *success )
|
||||
SetProjError( "pj_transform failed." );
|
||||
|
||||
else if( pj_is_latlong( psProj ) )
|
||||
{
|
||||
*x *= RAD_TO_DEG;
|
||||
*y *= RAD_TO_DEG;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CProjDef::GetHandle(long *pHandle)
|
||||
{
|
||||
*pHandle = (long) psProj;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDMETHODIMP CProjDef::IsLatLong(int *result)
|
||||
{
|
||||
if( psProj != NULL )
|
||||
{
|
||||
*result = pj_is_latlong( (projPJ) psProj );
|
||||
return S_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetError( "Projection is null" );
|
||||
return E_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
STDMETHODIMP CProjDef::GetLastError( BSTR *error )
|
||||
{
|
||||
*error = SysAllocString( sLastError );
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
void CProjDef::SetError( const char *pszMessage )
|
||||
|
||||
{
|
||||
USES_CONVERSION;
|
||||
|
||||
if( sLastError != NULL )
|
||||
{
|
||||
SysFreeString( sLastError );
|
||||
sLastError = NULL;
|
||||
}
|
||||
|
||||
sLastError = SysAllocString( A2BSTR( pszMessage ) );
|
||||
}
|
||||
|
||||
void CProjDef::SetProjError( const char *pszMessage )
|
||||
|
||||
{
|
||||
int *pj_errno = pj_get_errno_ref();
|
||||
|
||||
if( *pj_errno > 0 )
|
||||
SetError( strerror( *pj_errno ) );
|
||||
else if( *pj_errno < 0 )
|
||||
SetError( pj_strerrno( *pj_errno ) );
|
||||
else
|
||||
SetError( pszMessage );
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
// ProjDef.h : Declaration of the CProjDef
|
||||
|
||||
#ifndef __PROJDEF_H_
|
||||
#define __PROJDEF_H_
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CProjDef
|
||||
class ATL_NO_VTABLE CProjDef :
|
||||
public CComObjectRootEx<CComMultiThreadModel>,
|
||||
public CComCoClass<CProjDef, &CLSID_ProjDef>,
|
||||
public IDispatchImpl<IProjDef, &IID_IProjDef, &LIBID_PROJ4Lib>
|
||||
{
|
||||
public:
|
||||
CProjDef()
|
||||
{
|
||||
psProj = NULL;
|
||||
sLastError = NULL;
|
||||
SetError("");
|
||||
}
|
||||
|
||||
DECLARE_REGISTRY_RESOURCEID(IDR_PROJDEF)
|
||||
|
||||
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
||||
|
||||
BEGIN_COM_MAP(CProjDef)
|
||||
COM_INTERFACE_ENTRY(IProjDef)
|
||||
COM_INTERFACE_ENTRY(IDispatch)
|
||||
END_COM_MAP()
|
||||
|
||||
// IProjDef
|
||||
public:
|
||||
STDMETHOD(GetLastError)( BSTR *error );
|
||||
STDMETHOD(IsLatLong)(/*[out]*/ int *result);
|
||||
STDMETHOD(GetHandle)(long *pHandle);
|
||||
STDMETHOD(TransformPoint3D)(IUnknown *srcProj, double *x, double *y, double *z, int *success);
|
||||
STDMETHOD(Initialize)(BSTR proj_string, int *success);
|
||||
|
||||
private:
|
||||
void SetError( const char *pszMessage );
|
||||
void SetProjError( const char *pszMessage );
|
||||
|
||||
BSTR sLastError;
|
||||
void *psProj;
|
||||
|
||||
};
|
||||
|
||||
#endif //__PROJDEF_H_
|
||||
@@ -0,0 +1,26 @@
|
||||
HKCR
|
||||
{
|
||||
COMTest1.ProjDef.1 = s 'ProjDef Class'
|
||||
{
|
||||
CLSID = s '{B9B8F0A3-D9F8-4537-9A03-329DC9AE144C}'
|
||||
}
|
||||
COMTest1.ProjDef = s 'ProjDef Class'
|
||||
{
|
||||
CLSID = s '{B9B8F0A3-D9F8-4537-9A03-329DC9AE144C}'
|
||||
CurVer = s 'PROJ4.ProjDef.1'
|
||||
}
|
||||
NoRemove CLSID
|
||||
{
|
||||
ForceRemove {B9B8F0A3-D9F8-4537-9A03-329DC9AE144C} = s 'ProjDef Class'
|
||||
{
|
||||
ProgID = s 'PROJ4.ProjDef.1'
|
||||
VersionIndependentProgID = s 'PROJ4.ProjDef'
|
||||
ForceRemove 'Programmable'
|
||||
InprocServer32 = s '%MODULE%'
|
||||
{
|
||||
val ThreadingModel = s 'Both'
|
||||
}
|
||||
'TypeLib' = s '{A0ADE3D8-9A85-4BD3-AD56-BFEF42495130}'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
PROJ.4 COM Interface
|
||||
====================
|
||||
|
||||
This directory contains a Visual Studio 6 project to build
|
||||
a COM object with a partial interface to PROJ.4.
|
||||
|
||||
Once built, you should be able to:
|
||||
|
||||
regsvr32 debug\proj4com.dll
|
||||
|
||||
Then in VB6:
|
||||
|
||||
o Add the type library as a resource and enable it.
|
||||
|
||||
o Setup code like the following:
|
||||
|
||||
Private Sub Command1_Click()
|
||||
Dim pUTM As PROJ4Lib.IProjDef
|
||||
Dim pLL As PROJ4Lib.IProjDef
|
||||
|
||||
Set pUTM = New PROJ4Lib.ProjDef
|
||||
Set pLL = New PROJ4Lib.ProjDef
|
||||
|
||||
pUTM.Initialize ("+proj=utm +zone=11 +datum=WGS84")
|
||||
pLL.Initialize ("+proj=latlong +datum=WGS84")
|
||||
|
||||
Dim X As Double, Y As Double, Z As Double
|
||||
|
||||
X = 25000
|
||||
Y = 3000000
|
||||
Z = 0
|
||||
|
||||
MsgBox X & " " & Y
|
||||
|
||||
If pLL.TransformPoint3D(pUTM, X, Y, Z) = 0 Then
|
||||
MsgBox "TransformPoint3D " & pLL.GetLastError()
|
||||
End If
|
||||
|
||||
MsgBox X & " " & Y
|
||||
|
||||
End Sub
|
||||
@@ -0,0 +1,12 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// stdafx.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#ifdef _ATL_STATIC_REGISTRY
|
||||
#include <statreg.h>
|
||||
#include <statreg.cpp>
|
||||
#endif
|
||||
|
||||
#include <atlimpl.cpp>
|
||||
@@ -0,0 +1,27 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently,
|
||||
// but are changed infrequently
|
||||
|
||||
#if !defined(AFX_STDAFX_H__760250DA_0BD5_40FD_AC2A_6DDA09FFA21E__INCLUDED_)
|
||||
#define AFX_STDAFX_H__760250DA_0BD5_40FD_AC2A_6DDA09FFA21E__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#define STRICT
|
||||
#ifndef _WIN32_WINNT
|
||||
#define _WIN32_WINNT 0x0400
|
||||
#endif
|
||||
#define _ATL_APARTMENT_THREADED
|
||||
|
||||
#include <atlbase.h>
|
||||
//You may derive a class from CComModule and use it if you want to override
|
||||
//something, but do not change the name of _Module
|
||||
extern CComModule _Module;
|
||||
#include <atlcom.h>
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__760250DA_0BD5_40FD_AC2A_6DDA09FFA21E__INCLUDED)
|
||||
@@ -0,0 +1,50 @@
|
||||
VERSION 5.00
|
||||
Begin VB.Form Form1
|
||||
Caption = "Form1"
|
||||
ClientHeight = 3090
|
||||
ClientLeft = 60
|
||||
ClientTop = 450
|
||||
ClientWidth = 4680
|
||||
LinkTopic = "Form1"
|
||||
ScaleHeight = 3090
|
||||
ScaleWidth = 4680
|
||||
StartUpPosition = 3 'Windows Default
|
||||
Begin VB.CommandButton Command1
|
||||
Caption = "Command1"
|
||||
Height = 615
|
||||
Left = 1680
|
||||
TabIndex = 0
|
||||
Top = 2160
|
||||
Width = 975
|
||||
End
|
||||
End
|
||||
Attribute VB_Name = "Form1"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = False
|
||||
Attribute VB_PredeclaredId = True
|
||||
Attribute VB_Exposed = False
|
||||
Private Sub Command1_Click()
|
||||
Dim pUTM As PROJ4Lib.IProjDef
|
||||
Dim pLL As PROJ4Lib.IProjDef
|
||||
|
||||
Set pUTM = New PROJ4Lib.ProjDef
|
||||
Set pLL = New PROJ4Lib.ProjDef
|
||||
|
||||
pUTM.Initialize ("+proj=utm +zone=11 +datum=WGS84")
|
||||
pLL.Initialize ("+proj=latlong +datum=WGS84")
|
||||
|
||||
Dim X As Double, Y As Double, Z As Double
|
||||
|
||||
X = 25000
|
||||
Y = 3000000
|
||||
Z = 0
|
||||
|
||||
MsgBox X & " " & Y
|
||||
|
||||
If pLL.TransformPoint3D(pUTM, X, Y, Z) = 0 Then
|
||||
MsgBox "TransformPoint3D " & pLL.GetLastError()
|
||||
End If
|
||||
|
||||
MsgBox X & " " & Y
|
||||
|
||||
End Sub
|
||||
@@ -0,0 +1,38 @@
|
||||
/*********************************************************
|
||||
DllData file -- generated by MIDL compiler
|
||||
|
||||
DO NOT ALTER THIS FILE
|
||||
|
||||
This file is regenerated by MIDL on every IDL file compile.
|
||||
|
||||
To completely reconstruct this file, delete it and rerun MIDL
|
||||
on all the IDL files in this DLL, specifying this file for the
|
||||
/dlldata command line option
|
||||
|
||||
*********************************************************/
|
||||
|
||||
#define PROXY_DELEGATION
|
||||
|
||||
#include <rpcproxy.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
EXTERN_PROXY_FILE( COMTest1 )
|
||||
|
||||
|
||||
PROXYFILE_LIST_START
|
||||
/* Start of list */
|
||||
REFERENCE_PROXY_FILE( COMTest1 ),
|
||||
/* End of list */
|
||||
PROXYFILE_LIST_END
|
||||
|
||||
|
||||
DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C" */
|
||||
#endif
|
||||
|
||||
/* end of generated dlldata file */
|
||||
@@ -0,0 +1,17 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by COMTest1.rc
|
||||
//
|
||||
#define IDS_PROJNAME 100
|
||||
#define IDR_PROJDEF 101
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 201
|
||||
#define _APS_NEXT_COMMAND_VALUE 32768
|
||||
#define _APS_NEXT_CONTROL_VALUE 201
|
||||
#define _APS_NEXT_SYMED_VALUE 102
|
||||
#endif
|
||||
#endif
|
||||
@@ -1,149 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT([PROJ.4 Projections], 5.0.1, [https://github.com/OSGeo/proj.4/issues], proj)
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_LANG(C)
|
||||
|
||||
AC_CONFIG_AUX_DIR([.])
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_CONFIG_HEADER(src/proj_config.h)
|
||||
|
||||
dnl Enable as much warnings as possible
|
||||
AX_CFLAGS_WARN_ALL(C_WFLAGS)
|
||||
AC_SUBST(C_WFLAGS,$C_WFLAGS)
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
dnl Checks for libraries.
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS=`echo "$CFLAGS" | sed "s/-Werror/ /"`
|
||||
AC_CHECK_LIB(m,exp,,,)
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
dnl We check for headers
|
||||
AC_HEADER_STDC
|
||||
|
||||
dnl Check flag for accurate arithmetic with Intel compiler. This is
|
||||
dnl needed to stop the compiler from ignoring parentheses in expressions
|
||||
dnl like (a + b) + c and from simplifying 0.0 + x to x (which is wrong if
|
||||
dnl x = -0.0).
|
||||
AX_CHECK_COMPILE_FLAG([-fp-model precise],
|
||||
[CFLAGS="$CFLAGS -fp-model precise"],,[-Werror])
|
||||
dnl Check for C99 math functions
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Wall -Werror"
|
||||
AC_MSG_CHECKING([for C99 math functions])
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM(
|
||||
[#include <math.h>],
|
||||
[int q;
|
||||
return (int)(hypot(3.0, 4.0) + atanh(0.8) + cbrt(8.0) +
|
||||
remquo(100.0, 90.0, &q) +
|
||||
remainder(100.0, 90.0) + copysign(1.0, -0.0));])],
|
||||
[AC_MSG_RESULT([yes]);C99_MATH="-DHAVE_C99_MATH=1"],
|
||||
[AC_MSG_RESULT([no]);C99_MATH="-DHAVE_C99_MATH=0"])
|
||||
CFLAGS="$save_CFLAGS $C99_MATH"
|
||||
|
||||
AC_SEARCH_LIBS([sqrt], [m])
|
||||
|
||||
AC_CHECK_FUNC(localeconv, [AC_DEFINE(HAVE_LOCALECONV,1,[Define to 1 if you have localeconv])])
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Check for JNI support.
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
JNI_INCLUDE=
|
||||
export JNI_INCLUDE
|
||||
|
||||
AC_ARG_WITH(jni,
|
||||
[AS_HELP_STRING([--with-jni=dir],
|
||||
[Include Java/JNI support, add optional include dir])
|
||||
],,)
|
||||
|
||||
if test "$with_jni" = "yes" ; then
|
||||
|
||||
AC_DEFINE(JNI_ENABLED,1,[Enabled for Java/JNI Support])
|
||||
|
||||
AC_MSG_CHECKING(whether to enable Java/JNI support)
|
||||
|
||||
AC_MSG_RESULT([enabled])
|
||||
|
||||
elif test "$with_jni" != "no" -a "$with_jni" != "" ; then
|
||||
|
||||
AC_MSG_CHECKING(whether to enable Java/JNI support)
|
||||
|
||||
if test \! -r "$with_jni/jni.h" ; then
|
||||
AC_MSG_ERROR(Did not find $with_jni/jni.h)
|
||||
fi
|
||||
|
||||
AC_DEFINE(JNI_ENABLED,1,[Enabled for Java/JNI Support])
|
||||
|
||||
AC_MSG_RESULT([enabled])
|
||||
|
||||
JNI_INCLUDE="-I$with_jni"
|
||||
|
||||
elif test "$with_jni" = "" ; then
|
||||
AC_CHECK_HEADERS(jni.h)
|
||||
|
||||
AC_MSG_CHECKING(whether to enable Java/JNI support)
|
||||
|
||||
if test "$ac_cv_header_jni_h" = "no" ; then
|
||||
AC_MSG_RESULT([disabled])
|
||||
else
|
||||
AC_MSG_RESULT([enabled])
|
||||
AC_DEFINE(JNI_ENABLED,1,[Enabled for Java/JNI Support])
|
||||
fi
|
||||
|
||||
else
|
||||
AC_MSG_CHECKING(whether to enable Java/JNI support)
|
||||
|
||||
AC_MSG_RESULT([disabled])
|
||||
fi
|
||||
|
||||
AC_SUBST(JNI_INCLUDE,$JNI_INCLUDE)
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Provide a mechanism to disable real mutex support (if lacking win32 or
|
||||
dnl posix mutexes for instance).
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
AC_ARG_WITH([mutex],
|
||||
AS_HELP_STRING([--without-mutex],
|
||||
[Disable real mutex locks (lacking pthreads)]),,)
|
||||
|
||||
AC_MSG_CHECKING([for mutexes])
|
||||
THREAD_LIB=""
|
||||
if test "$with_mutex" = yes -o x"$with_mutex" = x ; then
|
||||
MUTEX_SETTING=pthread
|
||||
AC_CHECK_LIB(pthread,pthread_create,PTHREAD_EXISTS=YES,,,)
|
||||
if test -n "$PTHREAD_EXISTS" ; then
|
||||
THREAD_LIB="-lpthread"
|
||||
fi
|
||||
AC_CHECK_LIB(pthread,pthread_mutexattr_settype,,,)
|
||||
AC_CHECK_DECL(PTHREAD_MUTEX_RECURSIVE,
|
||||
AC_DEFINE(HAVE_PTHREAD_MUTEX_RECURSIVE, [], [Define if your pthreads implementation have PTHREAD_MUTEX_RECURSIVE]),
|
||||
,
|
||||
[#include <pthread.h>])
|
||||
AC_MSG_RESULT([enabled, pthread])
|
||||
else
|
||||
MUTEX_SETTING=stub
|
||||
AC_MSG_RESULT([disabled by user])
|
||||
fi
|
||||
|
||||
AC_SUBST(MUTEX_SETTING,$MUTEX_SETTING)
|
||||
AC_SUBST(THREAD_LIB,$THREAD_LIB)
|
||||
|
||||
AC_CONFIG_FILES([Makefile cmake/Makefile src/Makefile
|
||||
test/Makefile test/gie/Makefile test/gigs/Makefile
|
||||
man/Makefile man/man1/Makefile man/man3/Makefile nad/Makefile
|
||||
jniwrap/Makefile jniwrap/org/Makefile jniwrap/org/proj4/Makefile])
|
||||
AC_CONFIG_FILES([nad/install], [chmod +x nad/install])
|
||||
|
||||
AC_CONFIG_FILES([proj.pc])
|
||||
|
||||
AC_OUTPUT
|
||||
@@ -0,0 +1,99 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT([PROJ.4 Projections], 4.7.0, [warmerdam@pobox.com], proj)
|
||||
AC_LANG(C)
|
||||
|
||||
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_MAINTAINER_MODE
|
||||
AM_CONFIG_HEADER(src/proj_config.h)
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
dnl Checks for libraries.
|
||||
AC_CHECK_LIB(m,exp,,,)
|
||||
|
||||
dnl We check for headers
|
||||
AC_HEADER_STDC
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Check for JNI support.
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
JNI_INCLUDE=
|
||||
export JNI_INCLUDE
|
||||
|
||||
AC_ARG_WITH(jni,
|
||||
[ --with-jni=dir Include Java/JNI support, add optional include dir],,)
|
||||
|
||||
if test "$with_jni" = "yes" ; then
|
||||
|
||||
AC_DEFINE(JNI_ENABLED,1,[Enabled for Java/JNI Support])
|
||||
|
||||
AC_MSG_CHECKING(whether to enable Java/JNI support)
|
||||
|
||||
AC_MSG_RESULT([enabled])
|
||||
|
||||
elif test "$with_jni" != "no" -a "$with_jni" != "" ; then
|
||||
|
||||
AC_MSG_CHECKING(whether to enable Java/JNI support)
|
||||
|
||||
if test \! -r "$with_jni/jni.h" ; then
|
||||
AC_MSG_ERROR(Did not find $with_jni/jni.h)
|
||||
fi
|
||||
|
||||
AC_DEFINE(JNI_ENABLED,1,[Enabled for Java/JNI Support])
|
||||
|
||||
AC_MSG_RESULT([enabled])
|
||||
|
||||
JNI_INCLUDE="-I$with_jni"
|
||||
|
||||
elif test "$with_jni" = "" ; then
|
||||
AC_CHECK_HEADERS(jni.h)
|
||||
|
||||
AC_MSG_CHECKING(whether to enable Java/JNI support)
|
||||
|
||||
if test "$ac_cv_header_jni_h" = "no" ; then
|
||||
AC_MSG_RESULT([disabled])
|
||||
else
|
||||
AC_MSG_RESULT([enabled])
|
||||
AC_DEFINE(JNI_ENABLED,1,[Enabled for Java/JNI Support])
|
||||
fi
|
||||
|
||||
else
|
||||
AC_MSG_CHECKING(whether to enable Java/JNI support)
|
||||
|
||||
AC_MSG_RESULT([disabled])
|
||||
fi
|
||||
|
||||
AC_SUBST(JNI_INCLUDE,$JNI_INCLUDE)
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Provide a mechanism to disable real mutex support (if lacking win32 or
|
||||
dnl posix mutexes for instance).
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
AC_ARG_WITH([mutex],
|
||||
AS_HELP_STRING([--without-mutex],
|
||||
[Disable real mutex locks (lacking pthreads)]),,)
|
||||
|
||||
AC_MSG_CHECKING([for mutexes])
|
||||
if test "$with_mutex" = yes -o x"$with_mutex" = x ; then
|
||||
MUTEX_SETTING=pthread
|
||||
AC_MSG_RESULT([enabled, pthread])
|
||||
else
|
||||
MUTEX_SETTING=stub
|
||||
AC_MSG_RESULT([disabled by user])
|
||||
fi
|
||||
|
||||
AC_SUBST(MUTEX_SETTING,$MUTEX_SETTING)
|
||||
|
||||
AC_OUTPUT(Makefile src/Makefile man/Makefile man/man1/Makefile \
|
||||
man/man3/Makefile nad/Makefile \
|
||||
jniwrap/Makefile jniwrap/org/Makefile jniwrap/org/proj4/Makefile)
|
||||
@@ -0,0 +1,423 @@
|
||||
#! /bin/sh
|
||||
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
# Copyright 1999, 2000 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
# `libtool' can also be set to `yes' or `no'.
|
||||
|
||||
if test -z "$depfile"; then
|
||||
base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
|
||||
dir=`echo "$object" | sed 's,/.*$,/,'`
|
||||
if test "$dir" = "$object"; then
|
||||
dir=
|
||||
fi
|
||||
# FIXME: should be _deps on DOS.
|
||||
depfile="$dir.deps/$base"
|
||||
fi
|
||||
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say).
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||
## The second -e expression handles DOS-style file names with drive letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the `deleted header file' problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" |
|
||||
## Some versions of gcc put a space before the `:'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||
tr '
|
||||
' ' ' >> $depfile
|
||||
echo >> $depfile
|
||||
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> $depfile
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. This file always lives in the current directory.
|
||||
# Also, the AIX compiler puts `$object:' at the start of each line;
|
||||
# $object doesn't have directory information.
|
||||
stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
|
||||
tmpdepfile="$stripped.u"
|
||||
outname="$stripped.o"
|
||||
if test "$libtool" = yes; then
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
"$@" -M
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1="$dir.libs/$base.lo.d"
|
||||
tmpdepfile2="$dir.libs/$base.d"
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1="$dir$base.o.d"
|
||||
tmpdepfile2="$dir$base.d"
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile1"; then
|
||||
tmpdepfile="$tmpdepfile1"
|
||||
else
|
||||
tmpdepfile="$tmpdepfile2"
|
||||
fi
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a space and a tab in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the proprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'. We will use -o /dev/null later,
|
||||
# however we can't do the remplacement now because
|
||||
# `-o $object' might simply not be used
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
"$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no
|
||||
for arg in "$@"; do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
-*)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the proprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the proprocessed file to stdout, regardless of -o,
|
||||
# because we must use -o when running libtool.
|
||||
"$@" || exit $?
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
echo " " >> "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -1,62 +0,0 @@
|
||||
# This is the config file for building proj.4 and running its test suite
|
||||
# with Travis-ci.org
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.ccache
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
include:
|
||||
- os: linux
|
||||
compiler: gcc
|
||||
language: c
|
||||
sudo: required
|
||||
services:
|
||||
- docker
|
||||
env:
|
||||
- BUILD_NAME=linux_gcc
|
||||
- DETAILS="linux, gcc"
|
||||
- os: linux
|
||||
compiler: clang
|
||||
language: c
|
||||
sudo: required
|
||||
services:
|
||||
- docker
|
||||
env:
|
||||
- BUILD_NAME=linux_clang
|
||||
- DETAILS="linux, clang"
|
||||
- os: osx
|
||||
language: c
|
||||
env:
|
||||
- BUILD_NAME=osx
|
||||
- DETAILS="osx"
|
||||
- os: linux
|
||||
compiler: gcc
|
||||
language: c
|
||||
sudo: required
|
||||
env:
|
||||
- BUILD_NAME=mingw32
|
||||
- DETAILS="mingw32"
|
||||
|
||||
# allow_failures:
|
||||
# - os: osx
|
||||
|
||||
before_install: ./travis/${BUILD_NAME}/before_install.sh
|
||||
|
||||
install: ./travis/${BUILD_NAME}/install.sh
|
||||
|
||||
script:
|
||||
- echo "done"
|
||||
|
||||
after_success: ./travis/${BUILD_NAME}/after_success.sh
|
||||
|
||||
notifications:
|
||||
#email:
|
||||
# recipients:
|
||||
# - gdal-commits@lists.osgeo.org
|
||||
|
||||
irc:
|
||||
channels:
|
||||
- "irc.freenode.org#gdal"
|
||||
use_notice: true
|
||||
@@ -1,78 +0,0 @@
|
||||
platform:
|
||||
- x64
|
||||
- x86
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
|
||||
# Does not work
|
||||
# VS 2008
|
||||
# - BUILD_TYPE: cmake
|
||||
# VS_VERSION: Visual Studio 9 2008
|
||||
|
||||
# VS 2010
|
||||
- BUILD_TYPE: cmake
|
||||
VS_VERSION: Visual Studio 10
|
||||
|
||||
# VS 2012
|
||||
- BUILD_TYPE: cmake
|
||||
VS_VERSION: Visual Studio 11
|
||||
|
||||
# VS 2013
|
||||
- BUILD_TYPE: cmake
|
||||
VS_VERSION: Visual Studio 12
|
||||
|
||||
# VS 2015
|
||||
- BUILD_TYPE: cmake
|
||||
VS_VERSION: Visual Studio 14
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
|
||||
# VS 2017
|
||||
- BUILD_TYPE: cmake
|
||||
VS_VERSION: Visual Studio 15
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
|
||||
- BUILD_TYPE: nmake
|
||||
|
||||
shallow_clone: true
|
||||
|
||||
build_script:
|
||||
- echo build_script
|
||||
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x86" call "%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat"
|
||||
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64
|
||||
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" call "%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat" x86_amd64
|
||||
- if "%BUILD_TYPE%" == "nmake" nmake /f makefile.vc
|
||||
- if "%BUILD_TYPE%" == "nmake" nmake /f makefile.vc install-all
|
||||
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" cd src
|
||||
- if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" nmake /f makefile.vc multistresstest.exe
|
||||
# Disabled for now as it scales badly
|
||||
# - if "%BUILD_TYPE%" == "nmake" if "%platform%" == "x64" multistresstest.exe
|
||||
- if "%BUILD_TYPE%" == "cmake" if "%platform%" == "x64" SET VS_FULL=%VS_VERSION% Win64
|
||||
- if "%BUILD_TYPE%" == "cmake" if "%platform%" == "x86" SET VS_FULL=%VS_VERSION%
|
||||
- if "%BUILD_TYPE%" == "cmake" echo "%VS_FULL%"
|
||||
# warning C4706: assignment within conditional expression
|
||||
- if "%BUILD_TYPE%" == "cmake" cmake -G "%VS_FULL%" . -DCMAKE_BUILD_TYPE=Release -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=../bin -DBUILD_LIBPROJ_SHARED=ON -DCMAKE_C_FLAGS="/W4 /wd4706 /WX /D_CRT_SECURE_NO_WARNINGS"
|
||||
- if "%BUILD_TYPE%" == "cmake" cmake --build . --config Release
|
||||
|
||||
test_script:
|
||||
- echo test_script
|
||||
- if "%BUILD_TYPE%" == "cmake" set PROJ_LIB=C:\projects\proj-4\nad
|
||||
- if "%BUILD_TYPE%" == "nmake" set PROJ_LIB=C:\PROJ\SHARE
|
||||
- cd %PROJ_LIB%
|
||||
- curl -O http://download.osgeo.org/proj/proj-datumgrid-1.6.zip
|
||||
- curl -O http://download.osgeo.org/proj/vdatum/egm96_15/egm96_15.gtx
|
||||
- curl -O -k https://raw.githubusercontent.com/OSGeo/proj-datumgrid/master/BETA2007.gsb
|
||||
- 7z e -aoa -y proj-datumgrid-1.6.zip
|
||||
- dir
|
||||
- cd ..
|
||||
- dir
|
||||
- cd bin
|
||||
- echo "Contents of current directory:"
|
||||
- dir
|
||||
- echo "Contents of ..\test\gie:"
|
||||
- dir ..\test\gie
|
||||
- echo "Contents of PROJ_LIB " %PROJ_LIB%
|
||||
- dir %PROJ_LIB%
|
||||
- gie.exe ..\test\gie\*.gie ..\test\gigs\*.gie
|
||||
|
||||
deploy: off
|
||||
@@ -1,216 +0,0 @@
|
||||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
PAPER =
|
||||
BUILDDIR = build
|
||||
|
||||
# User-friendly check for sphinx-build
|
||||
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
|
||||
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
|
||||
endif
|
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
||||
# the i18n builder cannot share the environment and doctrees with the others
|
||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
||||
|
||||
.PHONY: help
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html to make standalone HTML files"
|
||||
@echo " dirhtml to make HTML files named index.html in directories"
|
||||
@echo " singlehtml to make a single large HTML file"
|
||||
@echo " pickle to make pickle files"
|
||||
@echo " json to make JSON files"
|
||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||
@echo " qthelp to make HTML files and a qthelp project"
|
||||
@echo " applehelp to make an Apple Help Book"
|
||||
@echo " devhelp to make HTML files and a Devhelp project"
|
||||
@echo " epub to make an epub"
|
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
|
||||
@echo " text to make text files"
|
||||
@echo " man to make manual pages"
|
||||
@echo " texinfo to make Texinfo files"
|
||||
@echo " info to make Texinfo files and run them through makeinfo"
|
||||
@echo " gettext to make PO message catalogs"
|
||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||
@echo " xml to make Docutils-native XML files"
|
||||
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
|
||||
@echo " linkcheck to check all external links for integrity"
|
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||
@echo " coverage to run coverage check of the documentation (if enabled)"
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf $(BUILDDIR)/*
|
||||
|
||||
.PHONY: html
|
||||
html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
.PHONY: dirhtml
|
||||
dirhtml:
|
||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||
|
||||
.PHONY: singlehtml
|
||||
singlehtml:
|
||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||
|
||||
.PHONY: pickle
|
||||
pickle:
|
||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||
@echo
|
||||
@echo "Build finished; now you can process the pickle files."
|
||||
|
||||
.PHONY: json
|
||||
json:
|
||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||
@echo
|
||||
@echo "Build finished; now you can process the JSON files."
|
||||
|
||||
.PHONY: htmlhelp
|
||||
htmlhelp:
|
||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||
|
||||
.PHONY: qthelp
|
||||
qthelp:
|
||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/proj4.qhcp"
|
||||
@echo "To view the help file:"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/proj4.qhc"
|
||||
|
||||
.PHONY: applehelp
|
||||
applehelp:
|
||||
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
|
||||
@echo
|
||||
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
|
||||
@echo "N.B. You won't be able to view it unless you put it in" \
|
||||
"~/Library/Documentation/Help or install it in your application" \
|
||||
"bundle."
|
||||
|
||||
.PHONY: devhelp
|
||||
devhelp:
|
||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||
@echo
|
||||
@echo "Build finished."
|
||||
@echo "To view the help file:"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/proj4"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/proj4"
|
||||
@echo "# devhelp"
|
||||
|
||||
.PHONY: epub
|
||||
epub:
|
||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||
@echo
|
||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||
|
||||
.PHONY: latex
|
||||
latex:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo
|
||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||
"(use \`make latexpdf' here to do that automatically)."
|
||||
|
||||
.PHONY: latexpdf
|
||||
latexpdf:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through pdflatex..."
|
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
.PHONY: latexpdfja
|
||||
latexpdfja:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through platex and dvipdfmx..."
|
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
.PHONY: text
|
||||
text:
|
||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||
@echo
|
||||
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||
|
||||
.PHONY: man
|
||||
man:
|
||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||
@echo
|
||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||
|
||||
.PHONY: texinfo
|
||||
texinfo:
|
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo
|
||||
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
||||
@echo "Run \`make' in that directory to run these through makeinfo" \
|
||||
"(use \`make info' here to do that automatically)."
|
||||
|
||||
.PHONY: info
|
||||
info:
|
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo "Running Texinfo files through makeinfo..."
|
||||
make -C $(BUILDDIR)/texinfo info
|
||||
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
||||
|
||||
.PHONY: gettext
|
||||
gettext:
|
||||
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
||||
@echo
|
||||
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
||||
|
||||
.PHONY: changes
|
||||
changes:
|
||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||
@echo
|
||||
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||
|
||||
.PHONY: linkcheck
|
||||
linkcheck:
|
||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||
@echo
|
||||
@echo "Link check complete; look for any errors in the above output " \
|
||||
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||
|
||||
.PHONY: doctest
|
||||
doctest:
|
||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||
@echo "Testing of doctests in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/doctest/output.txt."
|
||||
|
||||
.PHONY: coverage
|
||||
coverage:
|
||||
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
|
||||
@echo "Testing of coverage in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/coverage/python.txt."
|
||||
|
||||
.PHONY: xml
|
||||
xml:
|
||||
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
|
||||
@echo
|
||||
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
|
||||
|
||||
.PHONY: pseudoxml
|
||||
pseudoxml:
|
||||
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
|
||||
@echo
|
||||
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
|
||||
@@ -0,0 +1,809 @@
|
||||
%!PS-Adobe-2.0
|
||||
%%Creator: dvips 5.55 Copyright 1986, 1994 Radical Eye Software
|
||||
%%Title: swiss.dvi
|
||||
%%CreationDate: Sat Aug 5 14:07:55 1995
|
||||
%%Pages: 2
|
||||
%%PageOrder: Ascend
|
||||
%%BoundingBox: 0 0 612 792
|
||||
%%EndComments
|
||||
%DVIPSCommandLine: dvips swiss
|
||||
%DVIPSParameters: dpi=300, comments removed
|
||||
%DVIPSSource: TeX output 1995.08.05:1405
|
||||
%%BeginProcSet: tex.pro
|
||||
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
|
||||
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
|
||||
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
|
||||
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
|
||||
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
|
||||
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
|
||||
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
|
||||
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
|
||||
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
|
||||
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
|
||||
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
|
||||
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
|
||||
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
|
||||
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
|
||||
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
|
||||
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
|
||||
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
|
||||
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
|
||||
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
|
||||
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
|
||||
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
|
||||
0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
|
||||
setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
|
||||
.1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
|
||||
if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
|
||||
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
|
||||
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
|
||||
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
|
||||
add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
|
||||
userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
|
||||
known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
|
||||
/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
|
||||
65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
|
||||
0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
|
||||
{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
|
||||
getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
|
||||
ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
|
||||
RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
|
||||
false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
|
||||
round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
|
||||
rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
|
||||
{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
|
||||
B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
|
||||
4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
|
||||
p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
|
||||
a}B /bos{/SS save N}B /eos{SS restore}B end
|
||||
%%EndProcSet
|
||||
TeXDict begin 40258431 52099146 1000 300 300
|
||||
(/home/gie/MAPGEN/proj.tex/swiss/swiss.dvi) @start /Fa
|
||||
10 118 df<3F00070007000E000E000E000E001C001C001C001C0039C03E603830383070
|
||||
38703870387038E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>98
|
||||
D<01E007100C1018083810701070607F80E000E000E000E000E000E0086010602030C01F
|
||||
000D127B9113>101 D<01800380010000000000000000000000000000001C0026004700
|
||||
47008E008E000E001C001C001C0038003800710071007100720072003C00091C7C9B0D>
|
||||
105 D<1F800380038007000700070007000E000E000E000E001C001C001C001C00380038
|
||||
00380038007000700070007000E400E400E400E40068003800091D7C9C0B>108
|
||||
D<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701
|
||||
C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C0320300C01
|
||||
C01D127C9122>I<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030
|
||||
E06060C031801E000F127B9115>111 D<07870004D98008E0C008E0C011C0E011C0E001
|
||||
C0E001C0E00381C00381C00381C00381800703800703000707000706000E8C000E70000E
|
||||
00000E00001C00001C00001C00001C00003C0000FF8000131A7F9115>I<03C4062C0C3C
|
||||
181C3838303870387038E070E070E070E070E0E0C0E0C0E061E063C03DC001C001C00380
|
||||
03800380038007803FF00E1A7B9113>I<01F006080C080C1C18181C001F001FC00FF007
|
||||
F0007800386030E030C030806060C01F000E127D9111>115 D<1E030027070047070047
|
||||
0700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C0038388038388018388018
|
||||
39001C5900078E0011127C9116>117 D E /Fb 2 111 df<00200060006000C000C000C0
|
||||
018001800180030003000300060006000C000C000C001800180018003000300030006000
|
||||
60006000C000C000C0000B1D7E9511>61 D<30F8590C4E0C9C0C980C180C180C30183019
|
||||
303130316032601C100D7F8C15>110 D E /Fc 5 53 df<006000006000006000006000
|
||||
006000006000006000006000006000006000FFFFF0FFFFF0006000006000006000006000
|
||||
00600000600000600000600000600000600014167E9119>43 D<0F0030C0606060604020
|
||||
C030C030C030C030C030C030C030C030C03040206060606030C00F000C137E9211>48
|
||||
D<0C001C00EC000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C
|
||||
00FFC00A137D9211>I<1F0060C06060F070F030603000700070006000C001C001800200
|
||||
04000810101020207FE0FFE00C137E9211>I<006000E000E00160026006600C60086010
|
||||
6020606060C060FFFC0060006000600060006003FC0E137F9211>52
|
||||
D E /Fd 2 113 df<FFFFFF80FFFFFF8019027D8A20>0 D<000000004000000000C00000
|
||||
000180000000018000000003000000000300000000060000000006000000000C00000000
|
||||
0C00000000180000000018000000003000000000300000000060000000006000000000C0
|
||||
00000000C0000000018000000001800000000300000C000300003C000600004E00060000
|
||||
8E000C000007000C0000070018000003801800000380300000038030000001C060000001
|
||||
C060000000E0C0000000E0C0000000718000000071800000003B000000003B000000001E
|
||||
000000001E000000000C000000000C000000222A7E8123>112 D
|
||||
E /Fe 2 49 df<FFFFC0FFFFC012027D871A>0 D<040E0E1C1C1C38383070706060C0C0
|
||||
070F7F8F0A>48 D E /Ff 16 122 df<07800001C00000E00000E00000F0000070000070
|
||||
00007000003800003800003800003C00001C00001C00001E00000E00001E00003F000067
|
||||
0000C7000187800303800703800E03801C03C03801C07001C0E001E06000E0131D7E9C18
|
||||
>21 D<0FFFF81FFFF83FFFF0608400408400808C00010C00010C00030C00030C00020C00
|
||||
061C00061C000E1C000C1C001C0E001C0E00180C0015127E9118>25
|
||||
D<000100000200000200000200000200000400000400000400000400000800000800007E
|
||||
0001C9800710E00C1060181070381030702030702030E02070E02070E04070E040E0E040
|
||||
E06041C06083803086001C9C0007E0000100000100000100000100000200000200000200
|
||||
0002000014257E9C19>30 D<00010003000600060006000C000C000C0018001800180030
|
||||
003000300060006000C000C000C0018001800180030003000300060006000C000C000C00
|
||||
180018001800300030003000600060006000C000C00010297E9E15>61
|
||||
D<0001F808000E061800380138006000F001C0007003800070070000300F0000200E0000
|
||||
201C0000203C0000203C000000780000007800000078000000F0000000F0000000F00000
|
||||
00F0000000F0000100F0000100F0000100700002007000020030000400380008001C0010
|
||||
000E0060000701800000FE00001D1E7E9C1E>67 D<01FFC07F80003C001E000038001800
|
||||
003800200000380040000038008000007002000000700400000070080000007010000000
|
||||
E040000000E0C0000000E1E0000000E2E0000001C470000001D070000001E038000001C0
|
||||
380000038038000003801C000003801C000003800E000007000E000007000E0000070007
|
||||
000007000700000F00078000FFE03FF000211C7E9B23>75 D<01FFFE00003C03C0003800
|
||||
E0003800F00038007000380070007000F0007000F0007000F0007001E000E001C000E007
|
||||
8000E01E0000FFF00001C0300001C0180001C01C0001C01C0003801C0003801C0003801C
|
||||
0003801C0007003C0007003C0807003C0807003C100F001E10FFE00E20000007C01D1D7E
|
||||
9B20>82 D<01E3000717000C0F00180F00380E00300E00700E00700E00E01C00E01C00E0
|
||||
1C00E01C00E03880E03880E038806078803199001E0E0011127E9116>97
|
||||
D<01F0030C0E0C1C1E383C301870007000E000E000E000E000E000E0046008601030601F
|
||||
800F127E9112>99 D<01F007080C0818043808300870307FC0E000E000E000E000E000E0
|
||||
046008601030600F800E127E9113>101 D<0001E0000630000E78000CF0001C60001C00
|
||||
001C00001C00003C0000380000380003FFC0003800003800007000007000007000007000
|
||||
00700000E00000E00000E00000E00000E00001C00001C00001C00001C00001C000018000
|
||||
038000038000630000F30000F60000E4000078000015257E9C14>I<0FC00001C00001C0
|
||||
000380000380000380000380000700000700000700000700000E07000E18800E21C00E23
|
||||
C01C47801C83001D00001E00003F800039C00038E00038E00070E10070E10070E10070E2
|
||||
00E06200603C00121D7E9C16>107 D<381F004E61804681C04701C08F01C08E01C00E01
|
||||
C00E01C01C03801C03801C03801C0700380710380710380E10380E207006403003801412
|
||||
7E9119>110 D<00C001C001C001C00380038003800380FFF00700070007000E000E000E
|
||||
000E001C001C001C001C00382038203840384018800F000C1A80990F>116
|
||||
D<07878008C84010F0C020F1E020E3C040E18000E00000E00001C00001C00001C00001C0
|
||||
00638080F38080F38100E5810084C60078780013127E9118>120
|
||||
D<1C00C02701C04701C04701C08703808703800E03800E03801C07001C07001C07001C07
|
||||
00180E00180E00180E001C1E000C3C0007DC00001C00001800603800F03000F06000E0C0
|
||||
004180003E0000121A7E9114>I E /Fg 4 22 df<0000300000600000C0000180000300
|
||||
000700000E00000C0000180000380000300000700000E00000C00001C000018000038000
|
||||
0380000300000700000600000E00000E00000C00001C00001C00001C0000180000380000
|
||||
380000380000380000700000700000700000700000700000700000700000E00000E00000
|
||||
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
|
||||
E00000E00000E00000E00000E00000E00000E00000700000700000700000700000700000
|
||||
7000007000003800003800003800003800001800001C00001C00001C00000C00000E0000
|
||||
0E000006000007000003000003800003800001800001C00000C00000E000007000003000
|
||||
003800001800000C00000E000007000003000001800000C0000060000030146377811F>
|
||||
18 D<C000006000003000001800000C00000E000007000003000001800001C00000C000
|
||||
00E000007000003000003800001800001C00001C00000C00000E00000600000700000700
|
||||
0003000003800003800003800001800001C00001C00001C00001C00000E00000E00000E0
|
||||
0000E00000E00000E00000E0000070000070000070000070000070000070000070000070
|
||||
000070000070000070000070000070000070000070000070000070000070000070000070
|
||||
0000700000E00000E00000E00000E00000E00000E00000E00001C00001C00001C00001C0
|
||||
000180000380000380000380000300000700000700000600000E00000C00001C00001C00
|
||||
00180000380000300000700000E00000C00001C0000180000300000700000E00000C0000
|
||||
180000300000600000C0000014637F811F>I<FFE0FFE0FFE0E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFE0FFE0FF
|
||||
E00B63768116>I<FFE0FFE0FFE000E000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E0FFE0FFE0FFE00B63808116>I
|
||||
E /Fh 24 120 df<003FC00001F0300003C0380007C07C000F807C000F807C000F803800
|
||||
0F8000000F8000000F8000000F800000FFFFFC00FFFFFC000F807C000F807C000F807C00
|
||||
0F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C00
|
||||
0F807C000F807C007FE1FF807FE1FF80191D809C1B>12 D<00038000000380000007C000
|
||||
0007C0000007C000000FE000000FE000001FF000001BF000001BF0000031F8000031F800
|
||||
0061FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF8003001F80
|
||||
03001F8006000FC006000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C7E9B24>65
|
||||
D<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80FC000F80FC000FC0FC000
|
||||
7C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC000
|
||||
7E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF
|
||||
00FFFFF8001F1C7E9B25>68 D<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003
|
||||
800FC003800FC001800FC181800FC181800FC180000FC180000FC380000FFF80000FFF80
|
||||
000FC380000FC180000FC180000FC180000FC180000FC000000FC000000FC000000FC000
|
||||
000FC000000FC00000FFFF0000FFFF0000191C7E9B1E>70 D<FFFFFFFF07E007E007E007
|
||||
E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007
|
||||
E007E007E0FFFFFFFF101C7F9B12>73 D<FFFFF800FFFFFE000FC03F800FC00F800FC007
|
||||
C00FC007E00FC007E00FC007E00FC007E00FC007E00FC007C00FC007C00FC00F800FC03F
|
||||
000FFFFC000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000
|
||||
000FC000000FC000000FC00000FFFC0000FFFC00001B1C7E9B21>80
|
||||
D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE
|
||||
003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000
|
||||
E0F001C0FC03C0EFFF0083FC00141C7D9B1B>83 D<0FF8001C1E003E0F803E07803E07C0
|
||||
1C07C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F8
|
||||
0FE1F815127F9117>97 D<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F8
|
||||
0000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>99
|
||||
D<000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001F9
|
||||
F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801
|
||||
F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C078
|
||||
01C07801E0F801E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F
|
||||
038001FC0013127F9116>I<03F8F00E0F381E0F381C07303C07803C07803C07803C0780
|
||||
1C07001E0F000E0E001BF8001000001800001800001FFF001FFFC00FFFE01FFFF07801F8
|
||||
F00078F00078F000787000707800F01E03C007FF00151B7F9118>103
|
||||
D<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F
|
||||
001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>105
|
||||
D<007800FC00FC00FC00FC007800000000000000000000000003FC03FC007C007C007C00
|
||||
7C007C007C007C007C007C007C007C007C007C007C007C007C007C007C707CF87CF878F8
|
||||
F070E01F800E26839D0F>I<FF0000FF00001F00001F00001F00001F00001F00001F0000
|
||||
1F00001F00001F00001F0FF81F0FF81F03801F07001F0C001F18001F70001FF8001FFC00
|
||||
1FBC001F3E001F1F001F0F001F0F801F07C01F03E0FFC7FCFFC7FC161D7F9C19>I<FF00
|
||||
FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
|
||||
1F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C0E>I<FF0FC07E00FF31E18F
|
||||
001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C01F00F807C01F00F807C0
|
||||
1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C0FF
|
||||
E7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00
|
||||
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF1812
|
||||
7F911B>I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F8
|
||||
00F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FE3E00FE4700
|
||||
1E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F0000
|
||||
1F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF807F
|
||||
E07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300
|
||||
070007000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C
|
||||
1F0C0F08079803F00E1A7F9913>I<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C180
|
||||
07C18003E30003E30001F60001F60001FE0000FC0000FC0000780000780000300016127F
|
||||
9119>118 D<FF8FF8FEFF8FF8FE1F03E0301F03E0301F83E0700F83F0600F86F06007C6
|
||||
F0C007CEF8C007EC79C003EC7D8003F83D8001F83F0001F83F0001F01F0000F01E0000E0
|
||||
0E0000E00E001F127F9122>I E /Fi 45 122 df<E038F078F078F078F078F078F078F0
|
||||
78E038E03860300D0B7C9816>34 D<0387000387000387000387000387000387007FFFC0
|
||||
FFFFE0FFFFE0070E00070E00070E000E1C000E1C000E1C000E1C00FFFFE0FFFFE07FFFC0
|
||||
1C38001C38001C38001C38001C38001C380013197F9816>I<30787C3C1C1C1C1C3878F0
|
||||
E040060D789816>39 D<01C00001C00001C00001C00001C00001C00001C00001C000FFFF
|
||||
80FFFF80FFFF8001C00001C00001C00001C00001C00001C00001C00001C00011137E9516
|
||||
>43 D<70F8F8F8700505788416>46 D<03E0000FF8001FFC001E3C00380E00780F007007
|
||||
00700700E00380E00380E00380E00380E00380E00380E00380E00380F007807007007007
|
||||
00780F003C1E001E3C001FFC000FF80003E00011197E9816>48 D<01800380038007800F
|
||||
807F80FF807380038003800380038003800380038003800380038003800380038003807F
|
||||
F87FFC7FF80E197C9816>I<07E0001FF8003FFC00783E00E00700F00780F00380600380
|
||||
000380000380000700000700000E00001C0000380000700000E00001C0000380000F0000
|
||||
1E03803803807FFF80FFFF807FFF8011197E9816>I<07E0001FF8003FFC00781E007807
|
||||
00300700000700000700000E00003E0007FC0007F00007FC00001E000007000003000003
|
||||
80000380600380F00380E00700781E003FFC001FF80007E00011197E9816>I<007C0000
|
||||
FC0000DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C00F0
|
||||
1C00FFFFE0FFFFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FFC001FFC013
|
||||
197F9816>I<3FFE003FFE003FFE00380000380000380000380000380000380000380000
|
||||
3BF0003FFC003FFE003C0F00300700000380000380600380F00380F00380E00700781E00
|
||||
3FFC001FF80007E00011197E9816>I<00F80003FC0007FE000F07001C0F00380F007806
|
||||
00700000700000E3F800EFFC00FFFE00F80F00F00700F00380E00380E003807003807003
|
||||
807007803807003C1E001FFC000FF80003E00011197E9816>I<E00000FFFF80FFFF80FF
|
||||
FF80E00F00E01E00001C0000380000780000700000E00000E00001C00001C00001C00003
|
||||
8000038000038000038000070000070000070000070000070000070000070000111A7E99
|
||||
16>I<07F0001FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001FFC00
|
||||
07F0001FFC003C1E00700700F00780E00380E00380E00380F007807007007C1F003FFE00
|
||||
1FFC0007F00011197E9816>I<03E0000FF8001FFC003C1E00700E00700700E00700E007
|
||||
80E00380E00380E00780700780780F803FFF801FFB800FE380000700000700300700780E
|
||||
00781C007078003FF0001FE0000F800011197E9816>I<70F8F8F8700000000000000000
|
||||
70F8F8F8700512789116>I<000180000780001F80003E0000F80001F00007C0000F8000
|
||||
3E0000FC0000F00000FC00003E00000F800007C00001F00000F800003E00001F80000780
|
||||
00018011157E9616>60 D<7FFF00FFFF80FFFF80000000000000000000000000000000FF
|
||||
FF80FFFF807FFF00110B7E9116>I<C00000F00000FC00003E00000F800007C00001F000
|
||||
00F800003E00001F80000780001F80003E0000F80001F00007C0000F80003E0000FC0000
|
||||
F00000C0000011157E9616>I<01F18007FB800FFF801F0F803C07803803807003807003
|
||||
80F00000E00000E00000E00000E00000E00000E00000E00000F000007003807003803803
|
||||
803C07001F0F000FFE0007FC0001F00011197E9816>67 D<7FFFC0FFFFC07FFFC01C01C0
|
||||
1C01C01C01C01C01C01C00001C00001C1C001C1C001FFC001FFC001FFC001C1C001C1C00
|
||||
1C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE013197F9816>69
|
||||
D<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001FFF001FFF
|
||||
001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C07007F1FC0FFBF
|
||||
E07F1FC013197F9816>72 D<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC700
|
||||
1DC7001CC7001CC7001CE7001CE7001CE7001C67001C67001C77001C77001C37001C3700
|
||||
1C37001C17007F1F00FF9F007F0F0013197F9816>78 D<07E3001FFF003FFF00781F00F0
|
||||
0700E00700E00700E00000F000007800003F80001FF00007FC0000FE00000F0000070000
|
||||
0380000380600380E00380E00700F80F00FFFE00FFFC00C7F00011197E9816>83
|
||||
D<FFFF80FFFF80FFFF8011037E7E16>95 D<1FE0003FF0007FF800783C00300E00000E00
|
||||
000E0003FE001FFE003E0E00700E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E0
|
||||
13127E9116>97 D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF000F
|
||||
FF800F83C00F00E00E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F
|
||||
83C00FFF800EFF00063C001419809816>I<03F80FFC1FFE3C1E780C7000E000E000E000
|
||||
E000E000F000700778073E0E1FFC0FF803F010127D9116>I<003F00007F00003F000007
|
||||
0000070000070000070003C7000FF7001FFF003C1F00780F00700700E00700E00700E007
|
||||
00E00700E00700E00700700F00700F003C1F001FFFE00FE7F007C7E014197F9816>I<03
|
||||
E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000700778073C0F1FFE0FFC03F010
|
||||
127D9116>I<001F00007F8000FF8001E78001C30001C00001C0007FFF00FFFF00FFFF00
|
||||
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
|
||||
3FFE007FFF003FFE0011197F9816>I<018003C003C0018000000000000000007FC07FC0
|
||||
7FC001C001C001C001C001C001C001C001C001C001C001C001C07FFFFFFF7FFF101A7D99
|
||||
16>105 D<003000780078003000000000000000001FF81FF81FF8003800380038003800
|
||||
38003800380038003800380038003800380038003800380038003800386070F0F0FFE07F
|
||||
C03F800D237E9916>I<7E0000FE00007E00000E00000E00000E00000E00000E7FE00E7F
|
||||
E00E7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E000E0E000E07
|
||||
000E07807F87F0FFCFF07F87F01419809816>I<FFC000FFC000FFC00001C00001C00001
|
||||
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
|
||||
C00001C00001C00001C00001C000FFFF80FFFF80FFFF8011197E9816>I<F9C380FFEFC0
|
||||
FFFFE03C78E03C78E03870E03870E03870E03870E03870E03870E03870E03870E03870E0
|
||||
3870E0FE7CF8FE7CF8FE3C781512809116>I<7E3C00FEFE007FFF000F87800F03800E03
|
||||
800E03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7
|
||||
F01512809116>I<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380E0
|
||||
0380E00380F00780700700780F003C1E001FFC000FF80003E00011127E9116>I<7E3E00
|
||||
FEFF007FFF800F83C00F00E00E00E00E00700E00700E00700E00700E00700E00700E00E0
|
||||
0F01E00F83C00FFF800EFF000E3C000E00000E00000E00000E00000E00000E00007FC000
|
||||
FFE0007FC000141B809116>I<FF0FC0FF3FE0FF7FE007F04007C0000780000780000700
|
||||
00070000070000070000070000070000070000070000FFFC00FFFC00FFFC0013127F9116
|
||||
>114 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE00EF00EF81EFFFC
|
||||
FFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF0007
|
||||
000007000007000007000007000007000007000007010007038007038007038007870003
|
||||
FE0001FC0000F80011177F9616>I<FF1FE0FFBFE0FF1FE0380380380380380380380380
|
||||
38E38019F30019F30019B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F
|
||||
9116>119 D<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E000
|
||||
01F00003B800073C00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9F
|
||||
E07F1FC01C07000E07000E0E000E0E00070E00071C00071C00039C00039C0003980001B8
|
||||
0001B80000F00000F00000F00000E00000E00000E00001C00079C0007BC0007F80003F00
|
||||
003C0000131B7F9116>I E /Fj 25 122 df<70F8FCFC7404040404080810102040060F
|
||||
7C840E>44 D<70F8F8F87005057C840E>46 D<008003800F80F380038003800380038003
|
||||
800380038003800380038003800380038003800380038003800380038003800380038003
|
||||
80038003800380038007C0FFFE0F217CA018>49 D<03F8000C1E001007002007804007C0
|
||||
7807C07803C07807C03807C0000780000780000700000F00000E0000380003F000001C00
|
||||
000F000007800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C0
|
||||
400780200780100F000C1C0003F00013227EA018>51 D<000200000600000E00000E0000
|
||||
1E00001E00002E00004E00004E00008E00008E00010E00020E00020E00040E00040E0008
|
||||
0E00100E00100E00200E00200E00400E00800E00FFFFF8000E00000E00000E00000E0000
|
||||
0E00000E00000E00001F0001FFF015217FA018>I<1000801E07001FFF001FFE001FF800
|
||||
13E00010000010000010000010000010000010000010F800130E00140700180380100380
|
||||
0001C00001C00001E00001E00001E00001E07001E0F001E0F001E0E001C08001C04003C0
|
||||
4003802007001006000C1C0003F00013227EA018>I<01F000060C000C06001807003803
|
||||
80700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003
|
||||
E03803E01805E00C05E00619E003E1E00001C00001C00001C00003800003803003007807
|
||||
00780600700C002018001030000FC00013227EA018>57 D<000180000001800000018000
|
||||
0003C0000003C0000003C0000005E0000005E000000DF0000008F0000008F0000010F800
|
||||
001078000010780000203C0000203C0000203C0000401E0000401E0000401E0000800F00
|
||||
00800F0000FFFF000100078001000780030007C0020003C0020003C0040003E0040001E0
|
||||
040001E00C0000F00C0000F03E0001F8FF800FFF20237EA225>65
|
||||
D<FFFFFFC00F8007C0078001C0078000C007800040078000400780006007800020078000
|
||||
200780002007802020078020000780200007802000078060000780E00007FFE0000780E0
|
||||
000780600007802000078020000780200007802008078000080780000807800010078000
|
||||
1007800010078000300780003007800070078000E00F8003E0FFFFFFE01D227EA121>69
|
||||
D<0007F008003C0C1800E0021801C001B8038000F8070000780F0000381E0000381E0000
|
||||
183C0000183C0000187C0000087800000878000008F8000000F8000000F8000000F80000
|
||||
00F8000000F8000000F8000000F8001FFF780000F8780000787C0000783C0000783C0000
|
||||
781E0000781E0000780F00007807000078038000B801C000B800E00318003C0C080007F0
|
||||
0020247DA226>71 D<FFFC0FC00780078007800780078007800780078007800780078007
|
||||
800780078007800780078007800780078007800780078007800780078007800780078007
|
||||
800FC0FFFC0E227EA112>73 D<FFFFE000000F803C000007800E00000780078000078007
|
||||
C000078003C000078003E000078003E000078003E000078003E000078003E000078003C0
|
||||
00078007C000078007800007800E000007803C000007FFE0000007807000000780380000
|
||||
07801C000007801E000007800E000007800F000007800F000007800F000007800F000007
|
||||
800F800007800F800007800F800007800F808007800FC080078007C0800FC003C100FFFC
|
||||
01E2000000007C0021237EA124>82 D<0FE0001838003C0C003C0E001807000007000007
|
||||
0000070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817
|
||||
083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E0000
|
||||
0E00000E00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E0038
|
||||
0E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E0038
|
||||
0F00700C80600C41C0083F0017237FA21B>I<0000E0000FE00001E00000E00000E00000
|
||||
E00000E00000E00000E00000E00000E00000E00000E00000E001F8E00704E00C02E01C01
|
||||
E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800
|
||||
E03800E01801E00C02E0070CF001F0FE17237EA21B>100 D<01FC000707000C03801C01
|
||||
C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800
|
||||
203800201C00400E008007030000FC0013157F9416>I<00007001F198071E180E0E181C
|
||||
07001C07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F00010000010
|
||||
00001800001800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C0001860
|
||||
00306000303800E00E038003FE0015217F9518>103 D<0E00FE001E000E000E000E000E
|
||||
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
|
||||
000E000E000E000E000E000E000E000E000E00FFE00B237FA20E>108
|
||||
D<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00
|
||||
700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F941B>110
|
||||
D<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E
|
||||
000E000F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F0007F803FE0
|
||||
0FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<02000200020002
|
||||
000600060006000E001E003E00FFF80E000E000E000E000E000E000E000E000E000E000E
|
||||
000E040E040E040E040E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E
|
||||
00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E
|
||||
00700E00F00E00F006017003827800FC7F18157F941B>I<FFC1FE1E00780E00300E0020
|
||||
0E002007004007004003808003808003808001C10001C10000E20000E20000E200007400
|
||||
00740000380000380000380000100017157F941A>I<FFC1FE1E00780E00300E00200E00
|
||||
2007004007004003808003808003808001C10001C10000E20000E20000E2000074000074
|
||||
00003800003800003800001000001000002000002000002000004000F04000F08000F180
|
||||
004300003C0000171F7F941A>121 D E /Fk 28 125 df<78FCFCFCFC7806067B8511>
|
||||
46 D<00006000000060000000E0000001E0000001E0000003E0000003E0000005E00000
|
||||
09E0000009E0000011E0000021E0000021E0000041E0000081E0000081E0000101E00002
|
||||
01E0000201E0000401E0000801E0000801E0001001E0003001E0002001E0004001E000C0
|
||||
01E000FFFFFF80FFFFFF800001E0000001E0000001E0000001E0000001E0000001E00000
|
||||
01E0000001E0000003F000007FFF80007FFF8019287EA71E>52 D<03FFFF03FFFF0007E0
|
||||
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
|
||||
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
|
||||
0003E00003E00003E00003E03003E07803E0FC03E0FC03E0FC03C0F807C0400780200F00
|
||||
300E000C3C0003F000182A7DA81F>74 D<FFE0000003FFC0FFE0000003FFC007E0000003
|
||||
F80002F0000005F00002F0000005F0000278000009F0000278000009F0000278000009F0
|
||||
00023C000011F000023C000011F000021E000021F000021E000021F000021E000021F000
|
||||
020F000041F000020F000041F0000207800081F0000207800081F0000207800081F00002
|
||||
03C00101F0000203C00101F0000203E00201F0000201E00201F0000201E00201F0000200
|
||||
F00401F0000200F00401F0000200F00401F0000200780801F0000200780801F00002003C
|
||||
1001F00002003C1001F00002003C1001F00002001E2001F00002001E2001F00002000F40
|
||||
01F00002000F4001F00002000F4001F0000200078001F0000700078001F0000F80030003
|
||||
F800FFF803007FFFC0FFF803007FFFC032297EA837>77 D<FFE0001FFFFFF0001FFF03F8
|
||||
0001F002F80000E0027C000040027E000040023E000040021F000040021F800040020F80
|
||||
00400207C000400207E000400203E000400201F000400201F800400200F8004002007C00
|
||||
4002007E004002003E004002001F004002001F804002000F8040020007C040020003E040
|
||||
020003E040020001F040020000F840020000F8400200007C400200003E400200003E4002
|
||||
00001F400200000FC00200000FC002000007C002000003C002000003C007000001C00F80
|
||||
0000C0FFF80000C0FFF800004028297EA82D>I<0001FF0000000F01E000003C00780000
|
||||
78003C0000E0000E0001E0000F0003C000078007800003C00F800003E01F000001F01F00
|
||||
0001F03E000000F83E000000F87E000000FC7E000000FC7C0000007C7C0000007CFC0000
|
||||
007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC0000007EFC000000
|
||||
7EFC0000007E7C0000007C7E000000FC7E000000FC7E000000FC3E000000F83F000001F8
|
||||
1F000001F01F000001F00F800003E007800003C007C00007C003E0000F8000F0001E0000
|
||||
78003C00003C007800000F01E0000001FF0000272B7DA92E>I<FFFFFF8000FFFFFFF000
|
||||
07E000FC0003E0003E0003E0001F0003E0000F8003E0000FC003E00007C003E00007E003
|
||||
E00007E003E00007E003E00007E003E00007E003E00007E003E00007C003E0000FC003E0
|
||||
000F8003E0001F0003E0003E0003E001F80003FFFFE00003E000000003E000000003E000
|
||||
000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
|
||||
0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
|
||||
07F0000000FFFF800000FFFF80000023297EA829>I<FFFFFE000000FFFFFFC0000007E0
|
||||
03F0000003E000FC000003E0003E000003E0001F000003E0001F800003E0000F800003E0
|
||||
000FC00003E0000FC00003E0000FC00003E0000FC00003E0000FC00003E0000FC00003E0
|
||||
000F800003E0001F000003E0001E000003E0003C000003E000F8000003E003E0000003FF
|
||||
FE00000003E00780000003E001E0000003E000F0000003E00078000003E0007C000003E0
|
||||
003C000003E0003E000003E0003E000003E0003E000003E0003E000003E0003F000003E0
|
||||
003F000003E0003F000003E0003F000003E0003F008003E0003F808003E0001F808007F0
|
||||
000F8100FFFF8007C100FFFF8003C20000000000FC00292A7EA82C>82
|
||||
D<00FE010003FF83000F81E3001E0037003C001F0038000F007800070070000700F00003
|
||||
00F0000300F0000300F0000100F8000100F8000100FC0000007C0000007F0000003FE000
|
||||
001FFF00000FFFE00007FFF80003FFFC00007FFE000007FF0000007F0000001F8000000F
|
||||
80000007C0000007C0800003C0800003C0800003C0800003C0C00003C0C0000380C00003
|
||||
80E0000780F0000700F8000E00EE001C00C3C07800C1FFF000803FC0001A2B7DA921>I<
|
||||
01FC00000E0780001001C0003C00E0003E00F0003E0078001C0078000800780000007800
|
||||
0000780000007800007FF80003E078000F8078001F0078003E0078007C00780078007820
|
||||
F8007820F8007820F8007820F800F8207C00F8203C013C401F063FC007F80F001B1A7E99
|
||||
1E>97 D<07800000FF800000FF8000000F80000007800000078000000780000007800000
|
||||
07800000078000000780000007800000078000000780000007800000078000000783F000
|
||||
078C1C0007B0070007A0038007C003C0078001E0078001E0078000F0078000F0078000F8
|
||||
078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0
|
||||
078001E0078001C007C003C00740078007200E0006181C000407E0001D2A7FA921>I<00
|
||||
7F8001C0700780080F003C1E007C3C007C3C00387C0010780000F80000F80000F80000F8
|
||||
0000F80000F80000F80000F800007800007C00003C00043C00041E00080F001007802001
|
||||
C0C0007F00161A7E991B>I<007E0003C3800700E00E00F01C00703C00783C003878003C
|
||||
78003CF8003CF8003CFFFFFCF80000F80000F80000F80000F800007800007C00003C0004
|
||||
3C00041E00080E001007002001C0C0007F00161A7E991B>101 D<0F001F801F801F801F
|
||||
800F0000000000000000000000000000000000000007807F807F800F8007800780078007
|
||||
800780078007800780078007800780078007800780078007800780078007800780FFF8FF
|
||||
F80D297FA811>105 D<007800FC00FC00FC00FC00780000000000000000000000000000
|
||||
00000000007C07FC07FC007C003C003C003C003C003C003C003C003C003C003C003C003C
|
||||
003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C7038F838
|
||||
F870F07060C01F800E3582A812>I<0780FF80FF800F8007800780078007800780078007
|
||||
800780078007800780078007800780078007800780078007800780078007800780078007
|
||||
8007800780078007800780078007800780078007800780FFFCFFFC0E2A7FA911>108
|
||||
D<0781F800FC00FF860E030700FF98070C03800FA0079003C007A003D001E007C003E001
|
||||
E007C003E001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001
|
||||
E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001
|
||||
E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001
|
||||
E0FFFC7FFE3FFFFFFC7FFE3FFF301A7F9933>I<0783F800FF8C1C00FF900E000FA00700
|
||||
07A0078007C0078007C00780078007800780078007800780078007800780078007800780
|
||||
078007800780078007800780078007800780078007800780078007800780078007800780
|
||||
0780078007800780FFFCFFFCFFFCFFFC1E1A7F9921>I<007F000001C1C000070070000E
|
||||
0038001C001C003C001E003C001E0078000F0078000F00F8000F80F8000F80F8000F80F8
|
||||
000F80F8000F80F8000F80F8000F80F8000F8078000F0078000F003C001E003C001E001E
|
||||
003C000E0038000700700001C1C000007F0000191A7E991E>I<0783F000FF8C1C00FFB0
|
||||
0F0007A0078007C003C0078003E0078001E0078001F0078001F0078000F8078000F80780
|
||||
00F8078000F8078000F8078000F8078000F8078000F0078001F0078001F0078001E00780
|
||||
03C007C003C007C0078007A00E0007983C000787E0000780000007800000078000000780
|
||||
0000078000000780000007800000078000000780000007800000FFFC0000FFFC00001D26
|
||||
7F9921>I<003F008001E0C180038021800F0013801E000B801E000F803C0007807C0007
|
||||
807C00078078000780F8000780F8000780F8000780F8000780F8000780F8000780F80007
|
||||
807C0007807C0007803C0007803E000F801E000F800F0017800780278001E0C780007F07
|
||||
800000078000000780000007800000078000000780000007800000078000000780000007
|
||||
80000007800000FFFC0000FFFC1E267E9920>I<0787C0FF98E0FF91F00FA1F007C1F007
|
||||
C0E007C00007800007800007800007800007800007800007800007800007800007800007
|
||||
800007800007800007800007800007800007C000FFFE00FFFE00141A7F9917>I<07F840
|
||||
1C06C03001C06000C06000C0E00040E00040F00040F800007E00007FF0003FFE000FFF00
|
||||
03FF80003FC00007C08001E08001E0C000E0C000E0C000E0E000C0F001C0F80180C40700
|
||||
83F800131A7E9918>I<0080000080000080000080000180000180000180000380000380
|
||||
000780000F80001FFF80FFFF800780000780000780000780000780000780000780000780
|
||||
000780000780000780000780000780000780400780400780400780400780400780400780
|
||||
4003C08001C08000E100003E0012257FA417>I<07800780FF80FF80FF80FF800F800F80
|
||||
078007800780078007800780078007800780078007800780078007800780078007800780
|
||||
0780078007800780078007800780078007800780078007800780078007800F8007800F80
|
||||
0380178001C027C000E047FC003F87FC1E1A7F9921>I<FFF1FFC1FFFFF1FFC1FF0F803E
|
||||
00780F001E003007801E002007801E002007801F002003C03F004003C027004003C02780
|
||||
4001E067808001E043808001E043C08000F081C10000F081C10000F881E300007900E200
|
||||
007900E200007D00F600003E007400003E007400001E007800001C003800001C00380000
|
||||
0C0030000008001000281A7F992B>119 D<FFF00FF8FFF00FF80F8003C0078003800780
|
||||
010003C0020003C0020003E0020001E0040001E0040000F0080000F0080000F818000078
|
||||
100000781000003C2000003C2000003E6000001E4000001E4000000F8000000F80000007
|
||||
000000070000000700000002000000020000000400000004000000040000000800007008
|
||||
0000F8100000F8100000F8200000F0400000608000001F0000001D267F9920>121
|
||||
D<FFFFFFFFFFFFFFE03B0180903C>124 D E /Fl 65 125 df<007E0001C18003018007
|
||||
03C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E
|
||||
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
|
||||
01C07F87F8151D809C17>12 D<003F07E00001C09C18000380F018000701F03C000E01E0
|
||||
3C000E00E018000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC
|
||||
000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
|
||||
0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E
|
||||
00E01C000E00E01C007FC7FCFF80211D809C23>14 D<6060F0F0F8F86868080808080808
|
||||
101010102020404080800D0C7F9C15>34 D<60F0F8680808081010204080050C7C9C0C>
|
||||
39 D<004000800100020006000C000C0018001800300030007000600060006000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E000600060006000700030003000180018
|
||||
000C000C00060002000100008000400A2A7D9E10>I<800040002000100018000C000C00
|
||||
0600060003000300038001800180018001C001C001C001C001C001C001C001C001C001C0
|
||||
01C001C0018001800180038003000300060006000C000C00180010002000400080000A2A
|
||||
7E9E10>I<00060000000600000006000000060000000600000006000000060000000600
|
||||
000006000000060000000600000006000000060000FFFFFFE0FFFFFFE000060000000600
|
||||
000006000000060000000600000006000000060000000600000006000000060000000600
|
||||
0000060000000600001B1C7E9720>43 D<60F0F0701010101020204080040C7C830C>I<
|
||||
FFE0FFE00B0280890E>I<60F0F06004047C830C>I<03C00C301818300C300C700E600660
|
||||
06E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E300C30
|
||||
0C18180C3007E0101D7E9B15>48 D<030007003F00C70007000700070007000700070007
|
||||
000700070007000700070007000700070007000700070007000700070007000F80FFF80D
|
||||
1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C
|
||||
00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07E018
|
||||
30201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E000F00
|
||||
0F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C0000
|
||||
3C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C0030
|
||||
1C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C0001
|
||||
FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E02430281830
|
||||
1C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E9B15
|
||||
>I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007
|
||||
E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<4000007FFF
|
||||
807FFF007FFF0040020080040080040080080000100000100000200000600000400000C0
|
||||
0000C00001C0000180000180000380000380000380000380000780000780000780000780
|
||||
00078000078000030000111D7E9B15>I<03E00C301008200C2006600660066006700678
|
||||
0C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C00360026004300C1C
|
||||
1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E007
|
||||
6007700F300F18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B
|
||||
15>I<60F0F0600000000000000000000060F0F06004127C910C>I<7FFFFFC0FFFFFFE000
|
||||
00000000000000000000000000000000000000000000000000000000000000FFFFFFE07F
|
||||
FFFFC01B0C7E8F20>61 D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F
|
||||
001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F
|
||||
000F0F000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D>66
|
||||
D<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000
|
||||
807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F00000
|
||||
00F0000000700000807800008078000080380000801C0001001C0001000E000200070004
|
||||
000180080000E03000001FC000191E7E9C1E>I<FFFFC0000F00F0000F003C000F000E00
|
||||
0F0007000F0007000F0003800F0003C00F0001C00F0001C00F0001E00F0001E00F0001E0
|
||||
0F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003C00F000380
|
||||
0F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<FFFFFC0F00
|
||||
3C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F02000F06000FFE
|
||||
000F06000F02000F02000F02000F02010F00010F00020F00020F00020F00060F00060F00
|
||||
0C0F003CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F00080F00080F000C0F00040F
|
||||
00040F02040F02000F02000F02000F06000FFE000F06000F02000F02000F02000F02000F
|
||||
00000F00000F00000F00000F00000F00000F00000F8000FFF800161C7E9B1B>I<FFF3FF
|
||||
C00F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
|
||||
000F003C000F003C000F003C000FFFFC000F003C000F003C000F003C000F003C000F003C
|
||||
000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00FFF3FF
|
||||
C01A1C7E9B1F>72 D<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F
|
||||
000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<
|
||||
1FFF00F80078007800780078007800780078007800780078007800780078007800780078
|
||||
0078007800787078F878F878F878F0F040E021C01F00101D7F9B15>I<FF8000FF800F80
|
||||
00F8000F8000F8000BC00178000BC00178000BC001780009E002780009E002780008F004
|
||||
780008F004780008F0047800087808780008780878000878087800083C107800083C1078
|
||||
00083C107800081E207800081E207800081E207800080F407800080F4078000807807800
|
||||
0807807800080780780008030078001C03007800FF8307FF80211C7E9B26>77
|
||||
D<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F80400087804
|
||||
00083C0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4
|
||||
000801E4000800F40008007C0008007C0008003C0008003C0008001C0008000C001C000C
|
||||
00FF8004001A1C7E9B1F>I<003F800000E0E0000380380007001C000E000E001C000700
|
||||
3C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0
|
||||
F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0380003803C000780
|
||||
1C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20>I<FFFF800F00
|
||||
E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00
|
||||
E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
|
||||
000F0000FFF000171C7E9B1C>I<FFFF00000F01E0000F0078000F003C000F001C000F00
|
||||
1E000F001E000F001E000F001E000F001C000F003C000F0078000F01E0000FFF00000F03
|
||||
C0000F00E0000F00F0000F0078000F0078000F0078000F0078000F0078000F0078000F00
|
||||
78100F0078100F0038100F003C20FFF01C20000007C01C1D7E9B1F>82
|
||||
D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00
|
||||
007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001
|
||||
C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F
|
||||
00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F
|
||||
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
|
||||
0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>
|
||||
I<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004000F0004000F0004
|
||||
000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
|
||||
000F0004000F0004000F0004000F0004000700080007800800038010000180100000C020
|
||||
000070C000001F00001A1D7E9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F0010
|
||||
0F001F00100F001F001007801F00200780278020078027802003C027804003C043C04003
|
||||
C043C04003E043C04001E081E08001E081E08001E081E08000F100F10000F100F10000F1
|
||||
00F100007900FA00007A007A00007A007A00003E007C00003C003C00003C003C00003C00
|
||||
3C00001800180000180018000018001800281D7F9B2B>87 D<1FC000307000783800781C
|
||||
00301C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C
|
||||
40304E801F870012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C0000
|
||||
1C00001C00001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E0
|
||||
1C00E01C00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17>
|
||||
I<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007
|
||||
C00E127E9112>I<003F0000070000070000070000070000070000070000070000070000
|
||||
070000070003E7000C1700180F00300700700700600700E00700E00700E00700E00700E0
|
||||
0700E00700600700700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818
|
||||
300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112>
|
||||
I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E
|
||||
000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C0
|
||||
0C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C000100000
|
||||
3000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C0600180300300
|
||||
1C0E0007F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00
|
||||
001C00001C00001C00001C7C001C87001D03001E03801C03801C03801C03801C03801C03
|
||||
801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18
|
||||
003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C001C
|
||||
001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C0
|
||||
00000000000000000000000000000FE000E000E000E000E000E000E000E000E000E000E0
|
||||
00E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>
|
||||
I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3F
|
||||
C01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C
|
||||
001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C001C
|
||||
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
|
||||
001C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C00
|
||||
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
|
||||
01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF802112
|
||||
7F9124>I<FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C
|
||||
03801C03801C03801C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C00
|
||||
180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C0600180700380
|
||||
3003001806000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00
|
||||
C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8
|
||||
001C00001C00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<03C1000C
|
||||
3300180B00300F00700700700700E00700E00700E00700E00700E00700E0070060070070
|
||||
0700300F00180F000C370007C70000070000070000070000070000070000070000070000
|
||||
3FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C
|
||||
001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF0
|
||||
00F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C
|
||||
003C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E
|
||||
2003C00C1A7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03
|
||||
801C03801C03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF
|
||||
07E03C03801C01001C01000E02000E020007040007040007040003880003880003D80001
|
||||
D00001D00000E00000E00000E00000400013127F9116>I<FF3FCFE03C0F03801C070180
|
||||
1C0701001C0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0E800
|
||||
03A0E80003C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F03
|
||||
800F030007020003840001C80001D80000F00000700000780000F800009C00010E00020E
|
||||
000607000403801E07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E
|
||||
020007040007040007040003880003880003D80001D00001D00000E00000E00000E00000
|
||||
4000004000008000008000F08000F10000F300006600003C0000131A7F9116>I<FFFFFF
|
||||
FFFF802901808B2A>124 D E end
|
||||
%%EndProlog
|
||||
%%BeginSetup
|
||||
%%Feature: *Resolution 300dpi
|
||||
TeXDict begin
|
||||
|
||||
%%EndSetup
|
||||
%%Page: 1 1
|
||||
1 0 bop 1673 -75 a Fl(1)554 70 y Fk(Supplemen)n(tary)19
|
||||
b(PR)n(OJ.4)h(Notes|)521 145 y(Swiss)f(Oblique)g(Mercator)h(Pro)s
|
||||
(jection)817 203 y Fj(August)d(5,)f(1995)840 261 y(Release)g(4.3.3)749
|
||||
319 y(b)o(y)g(Gerald)g(I.)f(Ev)o(enden)324 401 y Fl(This)10
|
||||
b(pro)r(jection)g(is)g(an)g(oblique)f(Mercator)i(that)f(is)g(based)h
|
||||
(up)q(on)f(a)g(metho)q(d)f(in)o(v)o(olving)262 451 y(three)15
|
||||
b(steps:)312 526 y(1.)20 b(conformally)11 b(transform)i(ellipsoid)g(co)
|
||||
q(ordinates)h(to)g(a)g(sphere,)312 605 y(2.)20 b(transform)13
|
||||
b(the)h(spherical)g(system)f(so)g(that)h(the)g(sp)q(eci\014ed)h(pro)r
|
||||
(jection)f(origin)e(will)365 655 y(lie)i(on)f(the)i(equator,)e(and)312
|
||||
734 y(3.)20 b(p)q(erform)13 b(spherical)i(Mercator)g(con)o(v)o(ersion)f
|
||||
(to)f(cartesian)i(co)q(ordinates.)262 809 y(The)f(pro)r(jection)h(name)
|
||||
e(used)j(here)f(is)f(ten)o(tativ)o(e)h(and)f(is)g(deriv)o(ed)h(from)e
|
||||
(it)h(use)h(with)f(the)262 859 y(Swiss)g(co)q(ordinate)g(system)g
|
||||
(CH1903.)324 909 y(This)e(pro)r(jection)g(is)g(selected)i(in)e(the)h
|
||||
(PR)o(OJ.4)f(system)g(b)o(y)g Fi(+proj=somerc)d Fl(with)j(pa-)262
|
||||
959 y(rameters)g Fi(+lon_0=)f Fl(and)h Fi(+lat_0)f Fl(required)i(to)f
|
||||
(sp)q(ecify)h(pro)r(jection)g(origin.)j(Optionally)m(,)262
|
||||
1008 y(false)c(easting)i(and)f(northing,)f Fi(+x_0=)g
|
||||
Fl(and)h Fi(+y_0)p Fl(,)f(ma)o(y)f(b)q(e)j(used)g(as)f(w)o(ell)g(as)g
|
||||
(origin)f(scale)262 1058 y(factor)18 b Fi(k_0)p Fl(.)32
|
||||
b(F)m(or)18 b(usage)h(with)f(the)i(Swiss)e(CH1903)g(system,)h
|
||||
Fi(+init=world:CH1903)262 1108 y Fl(ma)o(y)11 b(b)q(e)k(used.)262
|
||||
1214 y Fh(Ac)o(kno)o(wledgemen)o(t)262 1291 y Fl(The)23
|
||||
b(dev)o(elopmen)o(t)f(presen)o(ted)j(here)f(w)o(as)f(due)g(to)g(the)h
|
||||
(kind)e(assistance)i(of)f(Daniel)262 1341 y(Ebneter)17
|
||||
b(of)f(the)g(Univ)o(ersit)o(y)h(of)e(Bern)i(who)f(con)o(tributed)h(in)o
|
||||
(v)n(aluable)d(do)q(cumen)o(tation,)262 1390 y(co)q(de)g(and)g(other)h
|
||||
(information)c(that)k(allo)o(w)o(ed)d(deriv)n(ation)i(of)f(the)i(basic)
|
||||
f(pro)r(jection)h(and)262 1440 y(pro)o(vided)e(b)q(enc)o(hmark)h(v)n
|
||||
(alues.)262 1547 y Fh(F)l(orw)o(ard)h(Pro)s(jection)262
|
||||
1623 y Fl(The)e(\014rst)h(step)g(is)f(the)g(con)o(v)o(ersion)h(of)e
|
||||
(geo)q(detic)i(latitude)e(to)h(a)g(sphere)i(b)o(y)e(the)g(follo)o(wing)
|
||||
262 1673 y(equation:)355 1777 y(ln)6 b(tan)463 1719 y
|
||||
Fg(\022)498 1749 y Ff(\031)p 498 1768 26 2 v 500 1806
|
||||
a Fl(4)538 1777 y(+)584 1749 y Ff(\036)609 1734 y Fe(0)p
|
||||
584 1768 37 2 v 592 1806 a Fl(2)626 1719 y Fg(\023)698
|
||||
1777 y Fl(=)42 b Ff(c)797 1719 y Fg(\024)818 1777 y Fl(ln)7
|
||||
b(tan)927 1719 y Fg(\022)962 1749 y Ff(\031)p 962 1768
|
||||
26 2 v 964 1806 a Fl(4)1002 1777 y(+)1048 1749 y Ff(\036)p
|
||||
1048 1768 25 2 v 1050 1806 a Fl(2)1078 1719 y Fg(\023)1118
|
||||
1777 y Fd(\000)1165 1749 y Ff(e)p 1164 1768 21 2 v 1164
|
||||
1806 a Fl(2)1197 1777 y(ln)1238 1719 y Fg(\022)1274 1749
|
||||
y Fl(1)i(+)g Ff(e)e Fl(sin)g Ff(\036)p 1274 1768 181
|
||||
2 v 1274 1806 a Fl(1)i Fd(\000)g Ff(e)e Fl(sin)g Ff(\036)1459
|
||||
1719 y Fg(\023\025)1521 1777 y Fl(+)i Ff(K)44 b Fl(\(1\))620
|
||||
1866 y Ff(\025)644 1849 y Fe(0)698 1866 y Fl(=)e Ff(c)p
|
||||
Fl(\()p Ff(\025)9 b Fd(\000)h Ff(\025)905 1872 y Fc(0)923
|
||||
1866 y Fl(\))702 b(\(2\))262 1948 y(where)12 b Ff(\036)g
|
||||
Fl(is)f(latitude)h(on)f(the)i(ellipsoid,)d Ff(\036)929
|
||||
1933 y Fe(0)952 1948 y Fl(is)i(latitude)f(on)h(the)g(sphere)i(and)d
|
||||
Ff(e)h Fl(is)g(ellipsoid)262 1998 y(eccen)o(tricit)o(y)m(.)21
|
||||
b(The)16 b(factors)f Ff(c)f Fl(and)h Ff(K)j Fl(are)d(determined)g(from)
|
||||
e(the)j(designated)f(latitude)262 2048 y(origin)d(of)i(the)g(pro)r
|
||||
(jection:)k Ff(\036)736 2054 y Fc(0)755 2048 y Fl(.)g(First,)c
|
||||
Ff(c)f Fl(is)h(obtained)g(from:)759 2165 y Ff(c)d Fl(=)832
|
||||
2106 y Fg(\022)863 2165 y Fl(1)e(+)939 2137 y Ff(e)958
|
||||
2122 y Fc(2)984 2137 y Fl(cos)1040 2122 y Fc(4)1065 2137
|
||||
y Ff(\036)1090 2143 y Fc(0)p 939 2155 170 2 v 969 2193
|
||||
a Fl(1)g Fd(\000)h Ff(e)1060 2181 y Fc(2)1114 2106 y
|
||||
Fg(\023)1144 2113 y Fc(1)p Fb(=)p Fc(2)262 2269 y Fl(Next)k(the)g
|
||||
(equiv)n(alen)o(t)g(origin)e(latitude)i(on)g(the)g(sphere)i(is)d
|
||||
(obtained)h(b)o(y:)844 2370 y(sin)7 b Ff(\036)927 2353
|
||||
y Fe(0)927 2380 y Fc(0)956 2370 y Fl(=)1005 2342 y(sin)g
|
||||
Ff(\036)1088 2348 y Fc(0)p 1005 2360 102 2 v 1047 2398
|
||||
a Ff(c)262 2466 y Fl(Substitute)14 b Ff(\036)487 2472
|
||||
y Fc(0)520 2466 y Fl(and)f Ff(\036)625 2450 y Fe(0)625
|
||||
2476 y Fc(0)657 2466 y Fl(in)o(to)h(Eqn.)f(1)h(and)g(solv)o(e)f(for)h
|
||||
Ff(K)s Fl(.)324 2515 y(Next)i(the)g(spherical)g(co)q(ordinates,)g
|
||||
Ff(\036)934 2500 y Fe(0)961 2515 y Fl(and)g Ff(\025)1068
|
||||
2500 y Fe(0)1080 2515 y Fl(,)f(are)h(rotated)g(b)o(y)f
|
||||
Ff(\036)1409 2521 y Fc(0)1443 2515 y Fl(ab)q(out)h(an)f(axis)262
|
||||
2565 y(through)k(the)h(equator)g(and)f(p)q(erp)q(endicular)h(to)g(the)g
|
||||
(plane)f(of)g(the)h(cen)o(tral)f(meridian)262 2615 y(\(W)m(ra)o(y's)12
|
||||
b Fa(simple)j(oblique)p Fl(\))f(so)g(that)g(the)g(latitude)g
|
||||
Ff(\036)1092 2621 y Fc(0)1124 2615 y Fl(b)q(ecomes)g
|
||||
Ff(\036)1314 2600 y Fe(00)1347 2615 y Fl(=)d(0)j(at)g
|
||||
Ff(\025)1500 2621 y Fc(0)1519 2615 y Fl(:)583 2697 y(sin)7
|
||||
b Ff(\036)666 2679 y Fe(00)728 2697 y Fl(=)42 b(cos)8
|
||||
b Ff(\036)890 2679 y Fe(0)890 2707 y Fc(0)915 2697 y
|
||||
Fl(sin)f Ff(\036)998 2679 y Fe(0)1018 2697 y Fd(\000)j
|
||||
Fl(sin)d Ff(\036)1143 2679 y Fe(0)1143 2707 y Fc(0)1168
|
||||
2697 y Fl(cos)h Ff(\036)1256 2679 y Fe(0)1274 2697 y
|
||||
Fl(cos)f Ff(\025)1360 2679 y Fe(0)1641 2697 y Fl(\(3\))583
|
||||
2759 y(sin)g Ff(\025)665 2742 y Fe(00)728 2759 y Fl(=)42
|
||||
b(cos)8 b Ff(\036)890 2742 y Fe(0)908 2759 y Fl(sin)f
|
||||
Ff(\025)990 2742 y Fe(0)1002 2759 y Ff(=)g Fl(cos)g Ff(\036)1117
|
||||
2742 y Fe(00)1641 2759 y Fl(\(4\))p eop
|
||||
%%Page: 2 2
|
||||
2 1 bop 1673 -75 a Fl(2)324 70 y(Finally)m(,)9 b(transform)i(the)h
|
||||
(rotated)h(co)q(ordinates)f(to)g(cartesian)g(b)o(y)g(the)g(spherical)g
|
||||
(form)262 120 y(of)h(the)h(Mercator)h(pro)r(jection:)690
|
||||
234 y Ff(y)43 b Fl(=)f Ff(R)7 b Fl(ln)g(tan)974 175 y
|
||||
Fg(\022)1010 206 y Ff(\031)p 1010 224 26 2 v 1012 263
|
||||
a Fl(4)1049 234 y(+)1096 206 y Ff(\036)1121 191 y Fe(00)p
|
||||
1096 224 46 2 v 1108 263 a Fl(2)1147 175 y Fg(\023)1186
|
||||
234 y Fl(+)j Ff(y)1248 240 y Fc(0)1641 234 y Fl(\(5\))688
|
||||
323 y Ff(x)41 b Fl(=)h Ff(R\025)883 306 y Fe(00)914 323
|
||||
y Fl(+)9 b Ff(x)979 329 y Fc(0)1641 323 y Fl(\(6\))262
|
||||
415 y(where)14 b Ff(R)f Fl(is)g(the)h(geometric)e(mean)g(of)h(the)g
|
||||
(merdinal)f(and)h(parallel)f(radius)h(at)g(the)h(refer-)262
|
||||
464 y(ence)h(p)q(oin)o(t:)780 543 y Ff(R)c Fl(=)h Ff(k)889
|
||||
549 y Fc(0)907 543 y Ff(a)980 480 y Fd(p)p 1015 480 110
|
||||
2 v 35 x Fl(1)d Fd(\000)g Ff(e)1105 503 y Fc(2)p 934
|
||||
533 237 2 v 934 574 a Fl(1)g Fd(\000)h Ff(e)1025 562
|
||||
y Fc(2)1051 574 y Fl(sin)1101 557 y Fc(2)1127 574 y Ff(\036)1152
|
||||
580 y Fc(0)262 640 y Fl(where)17 b Ff(a)g Fl(is)f(the)h(ma)r(jor)e
|
||||
(axis)h(of)g(the)h(ellipsoid.)25 b(The)17 b(scaling)f(factor,)h
|
||||
Ff(k)1445 646 y Fc(0)1463 640 y Fl(,)g(is)f(not)h(used)262
|
||||
690 y(\(=)12 b(1\))j(in)f(the)h(Swiss)g(v)o(ersion)f(but)h(it)f(can)h
|
||||
(reduce)h(o)o(v)o(erall)d(scale)i(error)g(if)f(appropriately)262
|
||||
740 y(applied.)262 848 y Fh(In)o(v)o(erse)g(Pro)s(jection)262
|
||||
924 y Fl(T)m(o)f(get)h(the)g(cartesian)h(co)q(ordinates)g(bac)o(k)e(in)
|
||||
o(to)h(the)g(rotated)g(spherical)h(system:)632 1038 y
|
||||
Ff(\036)657 1021 y Fe(00)719 1038 y Fl(=)42 b(2)821 980
|
||||
y Fg(\024)843 1038 y Ff(tan)905 1021 y Fe(\000)p Fc(1)956
|
||||
1038 y Fl(exp)1026 980 y Fg(\022)1062 1010 y Ff(y)11
|
||||
b Fd(\000)e Ff(y)1154 1016 y Fc(0)p 1062 1029 112 2 v
|
||||
1102 1067 a Ff(R)1178 980 y Fg(\023)1218 1038 y Fd(\000)1265
|
||||
1010 y Ff(\031)p 1265 1029 26 2 v 1267 1067 a Fl(4)1295
|
||||
980 y Fg(\025)1641 1038 y Fl(\(7\))632 1147 y Ff(\025)656
|
||||
1130 y Fe(00)719 1147 y Fl(=)798 1119 y Ff(y)i Fd(\000)e
|
||||
Ff(y)890 1125 y Fc(0)p 798 1137 112 2 v 838 1175 a Ff(R)1641
|
||||
1147 y Fl(\(8\))262 1250 y(Rotate)k(the)i(spherical)f(co)q(ordinates)h
|
||||
(bac)o(k)e(to)h(the)h(original)d(p)q(osition:)573 1341
|
||||
y(sin)7 b Ff(\036)656 1324 y Fe(0)709 1341 y Fl(=)42
|
||||
b(cos)7 b Ff(\036)870 1324 y Fe(0)870 1351 y Fc(0)896
|
||||
1341 y Fl(sin)g Ff(\036)979 1324 y Fe(00)1009 1341 y
|
||||
Fl(+)i(sin)e Ff(\036)1133 1324 y Fe(0)1133 1351 y Fc(0)1158
|
||||
1341 y Fl(cos)h Ff(\036)1246 1324 y Fe(00)1274 1341 y
|
||||
Fl(cos)f Ff(\025)1360 1324 y Fe(00)1641 1341 y Fl(\(9\))574
|
||||
1403 y(sin)g Ff(\025)656 1386 y Fe(0)709 1403 y Fl(=)42
|
||||
b(cos)7 b Ff(\036)870 1386 y Fe(00)898 1403 y Fl(sin)g
|
||||
Ff(\025)980 1386 y Fe(00)1002 1403 y Ff(=)g Fl(cos)g
|
||||
Ff(\036)1117 1386 y Fe(0)1620 1403 y Fl(\(10\))324 1495
|
||||
y(The)19 b(ellipsoid)e(longitude)h(is)h(obtained)f(from)f(Eqn.)i(2)f
|
||||
(but)h(latitude)f(requires)i(ap-)262 1544 y(plication)c(of)h
|
||||
(Newton-Raphson)g(metho)q(d)g(for)g(a)g(solution)g(of)g(Eqn.)g(1:)25
|
||||
b Ff(x)1471 1550 y Fb(n)p Fc(+1)1553 1544 y Fl(=)18 b
|
||||
Ff(x)1627 1550 y Fb(n)1661 1544 y Fd(\000)262 1594 y
|
||||
Ff(f)t Fl(\()p Ff(x)326 1600 y Fb(n)349 1594 y Fl(\))p
|
||||
Ff(=f)410 1579 y Fe(0)422 1594 y Fl(\()p Ff(x)462 1600
|
||||
y Fb(n)485 1594 y Fl(\).)g(The)c(correction)h(ratio)e(is:)461
|
||||
1656 y Fg(\024)483 1715 y Ff(C)f Fl(+)d(ln)e(tan)675
|
||||
1656 y Fg(\022)710 1686 y Ff(\031)p 710 1705 26 2 v 712
|
||||
1743 a Fl(4)750 1715 y(+)796 1686 y Ff(\036)p 796 1705
|
||||
25 2 v 798 1743 a Fl(2)826 1656 y Fg(\023)866 1715 y
|
||||
Fd(\000)913 1686 y Ff(e)p 912 1705 21 2 v 912 1743 a
|
||||
Fl(2)945 1715 y(ln)986 1656 y Fg(\022)1022 1686 y Fl(1)i(+)g
|
||||
Ff(e)e Fl(sin)g Ff(\036)p 1022 1705 181 2 v 1022 1743
|
||||
a Fl(1)i Fd(\000)g Ff(e)e Fl(sin)g Ff(\036)1207 1656
|
||||
y Fg(\023\025)1272 1686 y Fl(1)i Fd(\000)g Ff(e)1362
|
||||
1671 y Fc(2)1388 1686 y Fl(sin)1439 1669 y Fc(2)1464
|
||||
1686 y Ff(\036)p 1272 1705 218 2 v 1326 1743 a Fl(1)g
|
||||
Fd(\000)g Ff(e)1416 1731 y Fc(2)262 1828 y Fl(where:)703
|
||||
1893 y Ff(C)15 b Fl(=)796 1865 y(1)p 796 1883 21 2 v
|
||||
797 1921 a Ff(c)829 1834 y Fg(\024)851 1893 y Ff(K)d
|
||||
Fd(\000)e Fl(ln)c(tan)1048 1834 y Fg(\022)1084 1865 y
|
||||
Ff(\031)p 1084 1883 26 2 v 1086 1921 a Fl(4)1123 1893
|
||||
y(+)1170 1865 y Ff(\036)p 1170 1883 25 2 v 1172 1921
|
||||
a Fl(2)1199 1834 y Fg(\023\025)262 1992 y Fl(Use)19 b
|
||||
Ff(\036)371 1977 y Fe(0)402 1992 y Fl(as)g(the)h(initial)d(estimate)h
|
||||
(of)h Ff(\036)f Fl(and)h(iterate)h(un)o(til)e(the)i(correction)g(ratio)
|
||||
e(has)262 2042 y(reac)o(hed)d(su\016cien)o(t)f(tolerance.)19
|
||||
b(The)14 b(function)g(is)g(rapidly)e(con)o(v)o(ergen)o(t.)262
|
||||
2150 y Fh(Standard)h(De\014nition)262 2227 y Fl(The)f(follo)o(wing)d
|
||||
(en)o(try)j(has)g(b)q(een)h(placed)f(in)f(the)i Fi(world)d
|
||||
Fl(\014le)i(to)g(facilitate)e(CH1903)h(usage)262 2277
|
||||
y(with)i(the)i(PR)o(OJ.4)e(system)h(b)o(y)f(sp)q(ecifying)h
|
||||
Fi(+init=world:CH1903)o Fl(:)262 2360 y Fi(<CH1903>)20
|
||||
b(#)h(Swiss)g(Coordinate)f(System)349 2409 y(+proj=somerc)f
|
||||
(+lat_0=46d57'8.66)o(0"N)g(+lon_0=7d26'22.5)o(00"E)349
|
||||
2459 y(+ellps=bessel)g(+x_0=600000)g(+y_0=200000)349
|
||||
2509 y(+k_0=1.)42 b(no_defs)20 b(<>)262 2592 y Fl(Note,)g(the)f
|
||||
(original)e(are)j("rev)o(erse)g(engineered")h(from)c(decimal)g(v)n
|
||||
(alues)i(as)g(I)g(susp)q(ect)262 2642 y(original)12 b(sp)q
|
||||
(eci\014cations)j(w)o(ere)f(in)g(DMS)f(format|needs)g(v)o
|
||||
(eri\014cation.)p eop
|
||||
%%Trailer
|
||||
end
|
||||
userdict /end-hook known{end-hook}if
|
||||
%%EOF
|
||||
@@ -1,13 +0,0 @@
|
||||
name: proj
|
||||
channels:
|
||||
- conda-forge
|
||||
dependencies:
|
||||
- descartes
|
||||
- geojson
|
||||
- matplotlib
|
||||
- shapely < 1.8
|
||||
- pip
|
||||
- pip:
|
||||
- Jinja2 < 3.1
|
||||
- sphinx < 3
|
||||
- sphinx-rtd-theme < 1.0
|
||||
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 98 KiB |
@@ -1,7 +0,0 @@
|
||||
|
||||
|
||||
for f in $(ls *.png)
|
||||
do
|
||||
|
||||
convert $f -fx '(r+g+b)/3' -colorspace Gray $f
|
||||
done;
|
||||
@@ -1,424 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
'''
|
||||
Plot map data in different projections supported by PROJ.
|
||||
|
||||
Call with:
|
||||
|
||||
> python plot.py plotdefs outdir [plotname, [plotname, [plotname, ...]]]
|
||||
|
||||
The output dir is optional. Uses current dir if not set.
|
||||
|
||||
Inputs:
|
||||
------
|
||||
|
||||
plotdefs: A JSON file with setup for each auto-generated plot.
|
||||
outdir: Directory to put the plots in.
|
||||
plotname: A list of plot names within the plotdefs file. More
|
||||
than one plotname can be given at once.
|
||||
|
||||
Plot definitions:
|
||||
----------------
|
||||
|
||||
Plots are defined by a JSON dict. A plot is defined by a name, filename,
|
||||
bounding box (lat/long space), a proj-string, plottype and resolution.
|
||||
An example of the setup for the plot for the Airy projection is shown below:
|
||||
|
||||
{
|
||||
"filename": "airy.png",
|
||||
"latmax": 90,
|
||||
"latmin": -90,
|
||||
"lonmax": 90,
|
||||
"lonmin": -90,
|
||||
"name": "airy",
|
||||
"projstring": "+proj=airy",
|
||||
"res": "low",
|
||||
"type": "poly"
|
||||
}
|
||||
|
||||
"res" can be either "low" or "med" and "type" can be either "poly"(gon)
|
||||
or "line". The rest of the inputs are fairly free form.
|
||||
|
||||
|
||||
Change PROJ to path on your local system before running the script.
|
||||
'''
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import json
|
||||
import subprocess
|
||||
import functools
|
||||
from pathlib import Path
|
||||
|
||||
import geojson
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from shapely.geometry import MultiPolygon, Polygon, box as Box
|
||||
from shapely.geometry import shape
|
||||
from shapely.ops import transform
|
||||
from descartes import PolygonPatch
|
||||
|
||||
PROJ_COMMAND = os.environ.get('PROJ_EXE', '../../src/proj')
|
||||
if not os.path.exists(PROJ_COMMAND):
|
||||
PROJ = shutil.which('proj')
|
||||
if PROJ is None:
|
||||
raise ValueError("specify PROJ_EXE or modify PATH to find proj")
|
||||
else:
|
||||
PROJ = PROJ_COMMAND
|
||||
PROJ_LIB = os.environ.get('PROJ_LIB', '../../nad')
|
||||
|
||||
LINE_LOW = 'data/coastline.geojson'
|
||||
LINE_MED = 'data/coastline50.geojson'
|
||||
POLY_LOW = 'data/land.geojson'
|
||||
POLY_MED = 'data/land50.geojson'
|
||||
|
||||
GRATICULE_WIDTH = 15
|
||||
N_POINTS = 1000
|
||||
|
||||
# colors
|
||||
COLOR_LAND = '#000000'
|
||||
COLOR_COAST = '#000000'
|
||||
COLOR_GRAT = '#888888'
|
||||
|
||||
|
||||
def interp_coords(coords, tol):
|
||||
'''
|
||||
Interpolates extra coordinates when the euclidean distance between adjacent
|
||||
points are larger than given tolerance.
|
||||
|
||||
The function tries to densify a list of coordinates based on a simple measure.
|
||||
If two adjacent points in the input coordinate list are further away from each
|
||||
other than the specified tolerance, the list will be densified between those two
|
||||
points. Roughly speaking, a point will be inserted every `tol` between the
|
||||
points.
|
||||
|
||||
Inputs:
|
||||
-------
|
||||
coords: 2xN numpy array with geodetic coordinates
|
||||
tol: Euclidean distance tolerance.
|
||||
|
||||
Returns:
|
||||
--------
|
||||
A densified numpy array of coordinates. If tol < 0 the input array is returned
|
||||
unchanged.
|
||||
|
||||
'''
|
||||
if tol < 0:
|
||||
return coords
|
||||
|
||||
x, y = coords
|
||||
x = np.array(x)
|
||||
y = np.array(y)
|
||||
|
||||
dsts = np.hypot(np.diff(x), np.diff(y))
|
||||
# Points to the *beginning* of the segment.
|
||||
I = np.where(dsts > tol)[0]
|
||||
|
||||
offset = 0
|
||||
xy = []
|
||||
for i in I:
|
||||
# Add points that are already below tolerance.
|
||||
xy.append((x[offset:i], y[offset:i]))
|
||||
|
||||
# Interpolate between points above tolerance.
|
||||
n = int(np.ceil(dsts[i] / tol))
|
||||
x1 = np.linspace(x[i], x[i + 1], n + 1)
|
||||
y1 = np.linspace(y[i], y[i + 1], n + 1)
|
||||
xy.append((x1[:-1], y1[:-1]))
|
||||
|
||||
offset = i + 1
|
||||
|
||||
xy.append((x[offset:], y[offset:]))
|
||||
|
||||
xy = np.concatenate(xy, axis=1)
|
||||
|
||||
return xy.T
|
||||
|
||||
|
||||
def project(coordinates, proj_string, in_radians=False):
|
||||
'''
|
||||
Project geographical coordinates
|
||||
|
||||
Input:
|
||||
------
|
||||
coordinates: numpy ndarray of size (N,2) and type double.
|
||||
longitude, latitude
|
||||
proj_string: Definition of output projection
|
||||
|
||||
Out:
|
||||
----
|
||||
numpy ndarray with shape (N,2) with N pairs of 2D
|
||||
coordinates (x, y).
|
||||
'''
|
||||
|
||||
# proj expects binary input to be in radians
|
||||
if not in_radians:
|
||||
coordinates = np.deg2rad(coordinates)
|
||||
coordinates = coordinates.astype(np.double, copy=False)
|
||||
|
||||
# set up cmd call. -b for binary in/out
|
||||
args = [PROJ, '-b']
|
||||
args.extend(proj_string.split(' '))
|
||||
|
||||
try:
|
||||
proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
env={'PROJ_LIB': os.path.abspath(PROJ_LIB)})
|
||||
except FileNotFoundError as e:
|
||||
print("'proj' binary not found, set the PROJ_EXE environment variable "
|
||||
"to point to your local 'proj' binary --%s--" % e)
|
||||
exit(1)
|
||||
|
||||
stdout, _ = proc.communicate(coordinates.tobytes(order='C'))
|
||||
|
||||
out = np.frombuffer(stdout, dtype=np.double)
|
||||
return np.reshape(out, (-1, 2))
|
||||
|
||||
|
||||
def project_xy(x, y, proj_string):
|
||||
'''
|
||||
Wrapper for project() that works with shapely.ops.transform().
|
||||
'''
|
||||
a = project(np.column_stack((x, y)), proj_string)
|
||||
return a.T
|
||||
|
||||
|
||||
def meridian(lon, lat_min, lat_max):
|
||||
'''
|
||||
Calculate meridian coordinates.
|
||||
'''
|
||||
coords = np.zeros((N_POINTS, 2))
|
||||
coords[:, 0] = lon
|
||||
coords[:, 1] = np.linspace(lat_min, lat_max, N_POINTS)
|
||||
return coords
|
||||
|
||||
|
||||
def parallel(lat, lon_min, lon_max):
|
||||
'''
|
||||
Calculate parallel coordinates.
|
||||
'''
|
||||
coords = np.zeros((N_POINTS, 2))
|
||||
coords[:, 0] = np.linspace(lon_min, lon_max, N_POINTS)
|
||||
coords[:, 1] = lat
|
||||
return coords
|
||||
|
||||
|
||||
def build_graticule(lonmin=-180, lonmax=180, latmin=-85, latmax=85):
|
||||
'''
|
||||
Build graticule
|
||||
'''
|
||||
# we might get unwanted floats
|
||||
lonmin = int(lonmin)
|
||||
lonmax = int(lonmax)
|
||||
latmin = int(latmin)
|
||||
latmax = int(latmax)
|
||||
graticule = []
|
||||
|
||||
for lon in range(lonmin, lonmax+1, GRATICULE_WIDTH):
|
||||
graticule.append(meridian(lon, latmin, latmax))
|
||||
|
||||
for lat in range(latmin, latmax+1, GRATICULE_WIDTH):
|
||||
graticule.append(parallel(lat, lonmin, lonmax))
|
||||
|
||||
return graticule
|
||||
|
||||
|
||||
def resample_polygon(polygon):
|
||||
'''
|
||||
Use interp_coords() to resample (multi)polygons.
|
||||
'''
|
||||
try:
|
||||
xy = polygon.exterior.coords.xy
|
||||
except AttributeError: #no xy's
|
||||
return polygon
|
||||
ext = interp_coords(xy, 2)
|
||||
# interiors
|
||||
rings = []
|
||||
for int_ring in polygon.interiors:
|
||||
rings.append(interp_coords(int_ring.coords.xy, 2))
|
||||
return Polygon(ext, rings)
|
||||
|
||||
|
||||
def plot_with_interruptions(axes, x, y, delta_cut=1e100, **kwargs):
|
||||
"""
|
||||
Plot x/y with proper splitting for interrupted projections.
|
||||
"""
|
||||
_x = np.atleast_1d(x)
|
||||
_y = np.atleast_1d(y)
|
||||
|
||||
dx = np.nan_to_num(_x[1: ]) - np.nan_to_num(_x[0: -1])
|
||||
dy = np.nan_to_num(_y[1: ]) - np.nan_to_num(_y[0: -1])
|
||||
split, = ((np.abs(dx) > delta_cut) | (np.abs(dy) > delta_cut)).nonzero()
|
||||
split = np.append(split, _x.size - 1)
|
||||
split += 1
|
||||
|
||||
last_part = 0
|
||||
for part in split:
|
||||
axes.plot(x[last_part: part],
|
||||
y[last_part: part],
|
||||
**kwargs)
|
||||
last_part = part
|
||||
|
||||
|
||||
def plotproj(plotdef, data, outdir):
|
||||
'''
|
||||
Plot map.
|
||||
'''
|
||||
axes = plt.axes()
|
||||
|
||||
box = Box(
|
||||
plotdef['lonmin'], plotdef['latmin'],
|
||||
plotdef['lonmax'], plotdef['latmax'])
|
||||
for feat in data["features"]:
|
||||
geom = shape(feat["geometry"])
|
||||
if not geom.intersects(box):
|
||||
continue
|
||||
|
||||
temp_pol = geom.intersection(box)
|
||||
|
||||
if plotdef['type'] == 'poly':
|
||||
if isinstance(temp_pol, MultiPolygon):
|
||||
polys = [resample_polygon(polygon) for polygon in temp_pol.geoms]
|
||||
pol = MultiPolygon(polys)
|
||||
else:
|
||||
pol = resample_polygon(temp_pol)
|
||||
else:
|
||||
pol = temp_pol
|
||||
|
||||
trans = functools.partial(project_xy, proj_string=plotdef['projstring'])
|
||||
proj_geom = transform(trans, pol)
|
||||
|
||||
if plotdef['type'] == 'poly':
|
||||
try:
|
||||
patch = PolygonPatch(proj_geom, fc=COLOR_LAND, zorder=0)
|
||||
axes.add_patch(patch)
|
||||
except TypeError:
|
||||
pass
|
||||
else:
|
||||
x, y = proj_geom.xy
|
||||
plot_with_interruptions(axes, x, y, color=COLOR_COAST, linewidth=0.5,
|
||||
delta_cut=plotdef.get('delta_cut', 1e100))
|
||||
|
||||
# Plot frame
|
||||
frame = [
|
||||
parallel(plotdef['latmin'], plotdef['lonmin'], plotdef['lonmax']),
|
||||
parallel(plotdef['latmax'], plotdef['lonmin'], plotdef['lonmax']),
|
||||
]
|
||||
for line in frame:
|
||||
line = project(line, plotdef['projstring'])
|
||||
x = line[:, 0]
|
||||
y = line[:, 1]
|
||||
plot_with_interruptions(axes, x, y, color='black', linestyle='-',
|
||||
delta_cut=plotdef.get('delta_cut', 1e6))
|
||||
|
||||
graticule = build_graticule(
|
||||
plotdef['lonmin'],
|
||||
plotdef['lonmax'],
|
||||
plotdef['latmin'],
|
||||
plotdef['latmax'],
|
||||
)
|
||||
|
||||
# Plot graticule
|
||||
for feature in graticule:
|
||||
feature = project(feature, plotdef['projstring'])
|
||||
x = feature[:, 0]
|
||||
y = feature[:, 1]
|
||||
plot_with_interruptions(axes, x, y, color=COLOR_GRAT, linewidth=0.4,
|
||||
delta_cut=plotdef.get('delta_cut', 1e6))
|
||||
|
||||
# Plot interrupted boundaries if necessary
|
||||
interrupted_lines = []
|
||||
if 'top_interrupted_lons' in plotdef:
|
||||
for lon in plotdef['top_interrupted_lons']:
|
||||
for delta in [-0.0001, 0.0001]:
|
||||
merid = meridian(lon + delta, 0.0, plotdef['latmax'])
|
||||
interrupted_lines.append(project(merid, plotdef['projstring']))
|
||||
|
||||
if 'bottom_interrupted_lons' in plotdef:
|
||||
for lon in plotdef['bottom_interrupted_lons']:
|
||||
for delta in [-0.0001, 0.0001]:
|
||||
merid = meridian(lon + delta, plotdef['latmin'], 0)
|
||||
interrupted_lines.append(project(merid, plotdef['projstring']))
|
||||
|
||||
for line in interrupted_lines:
|
||||
x = line[:, 0]
|
||||
y = line[:, 1]
|
||||
plot_with_interruptions(axes, x, y, color=COLOR_GRAT, linewidth=0.4,
|
||||
delta_cut=plotdef.get('delta_cut', 1e100))
|
||||
|
||||
# Switch off the axis lines...
|
||||
plt.axis('off')
|
||||
# ... and additionally switch off the visibility of the axis lines and
|
||||
# labels so they can be removed by "bbox_inches='tight'" when saving
|
||||
axes.get_xaxis().set_visible(False)
|
||||
axes.get_yaxis().set_visible(False)
|
||||
|
||||
font = {
|
||||
'family': 'serif',
|
||||
'color': 'black',
|
||||
'style': 'italic',
|
||||
'size': 12
|
||||
}
|
||||
|
||||
# Make sure the plot is not stretched
|
||||
axes.set_aspect('equal')
|
||||
|
||||
outdir = Path(outdir)
|
||||
if not outdir.exists():
|
||||
outdir.mkdir(parents=True)
|
||||
if not outdir.is_dir():
|
||||
raise OSError("outdir is not a directory")
|
||||
plt.savefig(outdir / plotdef['filename'],
|
||||
dpi=400,
|
||||
bbox_inches='tight')
|
||||
|
||||
# Clean up
|
||||
axes = None
|
||||
del axes
|
||||
plt.close()
|
||||
|
||||
|
||||
def main(plotdefs, outdir, plots=[]):
|
||||
'''
|
||||
Main function of plotting script.
|
||||
|
||||
Parses json-file with plot setups and runs the plotting
|
||||
for each plot setup.
|
||||
'''
|
||||
plotdefs = json.loads(Path(plotdefs).read_text())
|
||||
|
||||
data = {
|
||||
('line', 'low'): geojson.loads(Path(LINE_LOW).read_text()),
|
||||
('line', 'med'): geojson.loads(Path(LINE_MED).read_text()),
|
||||
('poly', 'low'): geojson.loads(Path(POLY_LOW).read_text()),
|
||||
('poly', 'med'): geojson.loads(Path(POLY_MED).read_text()),
|
||||
}
|
||||
|
||||
for i, plotdef in enumerate(plotdefs):
|
||||
if plots != [] and plotdef['name'] not in plots:
|
||||
continue
|
||||
|
||||
print(i, plotdef['projstring'])
|
||||
if 'skip' in plotdef.keys():
|
||||
print('skipping')
|
||||
continue
|
||||
|
||||
plotproj(plotdef, data[(plotdef['type'], plotdef['res'])], outdir)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(
|
||||
description=__doc__,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument(
|
||||
'plotdefs',
|
||||
help='A JSON file with setup for each auto-generated plot')
|
||||
parser.add_argument(
|
||||
'outdir',
|
||||
help='Directory to put the plots in.')
|
||||
parser.add_argument(
|
||||
'plots', nargs='*',
|
||||
help='A list of plot names within the plotdefs file. '
|
||||
'More than one plotname can be given at once.')
|
||||
args = parser.parse_args()
|
||||
sys.exit(main(**vars(args)))
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
export PROJ_LIB="$HOME/.local/share/proj"
|
||||
|
||||
cd docs/plot
|
||||
python plot.py plotdefs.json images
|
||||
cd ../..
|
||||
|
||||
mkdir -p docs/source/operations/projections/images/
|
||||
cp -r docs/plot/images/* docs/source/operations/projections/images/
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS=-Wno-error -DCMAKE_INSTALL_PREFIX=$HOME/.local ..
|
||||
|
||||
ninja install
|
||||
@@ -1,57 +0,0 @@
|
||||
/* override table width restrictions */
|
||||
@media screen and (min-width: 767px) {
|
||||
|
||||
.wy-table-responsive table td {
|
||||
/* !important prevents the common CSS stylesheets from overriding
|
||||
this as on RTD they are loaded after this stylesheet */
|
||||
white-space: normal !important;
|
||||
}
|
||||
|
||||
.wy-table-responsive {
|
||||
overflow: visible !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Align equation numbers to the right of the equation, not above */
|
||||
div.math {
|
||||
position: relative;
|
||||
padding-right: 2.5em;
|
||||
}
|
||||
.eqno {
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
padding-left: 5px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
.eqno:before {
|
||||
/* Force vertical alignment of number */
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
vertical-align: middle;
|
||||
content: "";
|
||||
}
|
||||
.eqno .headerlink {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
font-size: 14px;
|
||||
padding-left: .3em;
|
||||
}
|
||||
.eqno:hover .headerlink {
|
||||
display: inline-block;
|
||||
visibility: hidden;
|
||||
margin-right: -1.05em;
|
||||
}
|
||||
.eqno .headerlink:after {
|
||||
visibility: visible;
|
||||
content: "\f0c1";
|
||||
font-family: FontAwesome;
|
||||
display: inline-block;
|
||||
margin-left: -.9em;
|
||||
}
|
||||
/* Make responsive */
|
||||
.MathJax_Display {
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
@@ -1,312 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# PROJ.4 documentation build configuration file, created by
|
||||
# sphinx-quickstart on Wed Feb 24 10:47:15 2016.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its
|
||||
# containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
'sphinx.ext.mathjax',
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
# source_suffix = ['.rst', '.md']
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'PROJ.4'
|
||||
copyright = u'1983-2018'
|
||||
author = u'Gerald Evenden, Frank Warmerdam, and others'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = u'5.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = u'5.0.1'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
# language = 'en'
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
today = 'April 2018'
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = []
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all
|
||||
# documents.
|
||||
#default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
#add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
#add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
#show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# Specify default language for syntax highlighting.
|
||||
highlight_language = 'none'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
#modindex_common_prefix = []
|
||||
|
||||
# If true, keep warnings as "system message" paragraphs in the built documents.
|
||||
#keep_warnings = False
|
||||
|
||||
# If true, `todo` and `todoList` produce output, else they produce nothing.
|
||||
todo_include_todos = False
|
||||
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
import sphinx_rtd_theme
|
||||
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
|
||||
html_theme = "sphinx_rtd_theme"
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
html_theme_options = {}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
htm_css_files = [
|
||||
'theme_overrides.css', # override wide tables in RTD theme
|
||||
]
|
||||
|
||||
html_context = {
|
||||
'display_github': True,
|
||||
'theme_vcs_pageview_mode': 'edit',
|
||||
'github_user': 'OSGeo',
|
||||
'github_repo': 'PROJ',
|
||||
'github_version': '/5.0/docs/source/',
|
||||
}
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
# .htaccess) here, relative to this directory. These files are copied
|
||||
# directly to the root of the documentation.
|
||||
#html_extra_path = []
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
html_last_updated_fmt = '%d %b %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
#html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
#html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
html_show_sourcelink = False
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
#html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
#html_file_suffix = None
|
||||
|
||||
# Language to be used for generating the HTML full-text search index.
|
||||
# Sphinx supports the following languages:
|
||||
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
|
||||
# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
|
||||
#html_search_language = 'en'
|
||||
|
||||
# A dictionary with options for the search language support, empty by default.
|
||||
# Now only 'ja' uses this config value
|
||||
#html_search_options = {'type': 'default'}
|
||||
|
||||
# The name of a javascript file (relative to the configuration directory) that
|
||||
# implements a search results scorer. If empty, the default will be used.
|
||||
#html_search_scorer = 'scorer.js'
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'proj4doc'
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
|
||||
preamble = r"""
|
||||
\ifdefined\DeclareUnicodeCharacter
|
||||
\DeclareUnicodeCharacter{2032}{$'$}% prime
|
||||
\fi
|
||||
|
||||
\usepackage[notbib,notindex]{tocbibind}
|
||||
"""
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
'preamble': preamble,
|
||||
'inputenc': r'\usepackage[utf8]{inputenc}',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#'figure_align': 'htbp',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, 'proj4.tex', u'PROJ.4 Documentation',
|
||||
author, 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output ---------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(master_doc, 'proj4', u'PROJ.4 Documentation',
|
||||
[author], 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#man_show_urls = False
|
||||
|
||||
|
||||
# -- Options for Texinfo output -------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'proj4', u'PROJ.4 Documentation',
|
||||
author, 'proj4', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#texinfo_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#texinfo_domain_indices = True
|
||||
|
||||
# How to display URL addresses: 'footnote', 'no', or 'inline'.
|
||||
#texinfo_show_urls = 'footnote'
|
||||
|
||||
# If true, do not generate a @detailmenu in the "Top" node's menu.
|
||||
#texinfo_no_detailmenu = False
|
||||
@@ -1,242 +0,0 @@
|
||||
.. _contributing:
|
||||
|
||||
===========================
|
||||
Contributing
|
||||
===========================
|
||||
|
||||
PROJ has a wide and varied user base. Some are highly skilled
|
||||
geodesists with a deep knowledge of map projections and reference
|
||||
systems, some are GIS software developers and others are GIS users. All
|
||||
users, regardless of the profession or skill level, has the ability to
|
||||
contribute to PROJ. Here's a few suggestion on how:
|
||||
|
||||
- Help PROJ-users that is less experienced than yourself.
|
||||
- Write a bug report
|
||||
- Request a new feature
|
||||
- Write documentation for your favorite map projection
|
||||
- Fix a bug
|
||||
- Implement a new feature
|
||||
|
||||
In the following sections you can find some guidelines on how to
|
||||
contribute. As PROJ is managed on GitHub most contributions require
|
||||
that you have a GitHub account. Familiarity with
|
||||
`issues <https://guides.github.com/features/issues/>`__ and the `GitHub
|
||||
Flow <https://guides.github.com/introduction/flow/>`__ is an advantage.
|
||||
|
||||
Help a fellow PROJ user
|
||||
-------------------------
|
||||
|
||||
The main forum for support for PROJ is the mailing list. You can
|
||||
subscribe to the mailing list
|
||||
`here <http://lists.maptools.org/mailman/listinfo/proj>`__ and read the
|
||||
archive `here <http://lists.maptools.org/pipermail/proj/>`__.
|
||||
|
||||
If you have questions about the usage of PROJ the mailing list is also
|
||||
the place to go. Please *do not* use the GitHub issue tracker as a
|
||||
support forum. Your question is much more likely to be answered on the
|
||||
mailing list, as many more people follow that than the issue tracker.
|
||||
|
||||
Adding bug reports
|
||||
------------------
|
||||
|
||||
Bug reports are handled in the `issue
|
||||
tracker <https://github.com/OSGeo/proj.4/issues>`__ on PROJ's home on
|
||||
GitHub. Writing a good bug report is not easy. But fixing a poorly
|
||||
documented bug is not easy either, so please put in the effort it takes
|
||||
to create a thorough bug report.
|
||||
|
||||
A good bug report includes at least:
|
||||
|
||||
- A title that quickly explains the problem
|
||||
- A description of the problem and how it can be reproduced
|
||||
- Version of PROJ being used
|
||||
- Version numbers of any other relevant software being used, e.g.
|
||||
operating system
|
||||
- A description of what already has been done to solve the problem
|
||||
|
||||
The more information that is given up front, the more likely it is that
|
||||
a developer will find interest in solving the problem. You will probably
|
||||
get follow-up questions after submitting a bug report. Please answer
|
||||
them in a timely manner if you have an interest in getting the issue
|
||||
solved.
|
||||
|
||||
Finally, please only submit bug reports that are actually related to
|
||||
PROJ. If the issue materializes in software that uses PROJ it is
|
||||
likely a problem with that particular software. Make sure that it
|
||||
actually is a PROJ problem before you submit an issue. If you can
|
||||
reproduce the problem only by using tools from PROJ it is definitely a
|
||||
problem with PROJ.
|
||||
|
||||
Feature requests
|
||||
----------------
|
||||
|
||||
Got an idea for a new feature in PROJ? Submit a thorough description
|
||||
of the new feature in the `issue
|
||||
tracker <https://github.com/OSGeo/proj.4/issues>`__. Please include any
|
||||
technical documents that can help the developer make the new feature a
|
||||
reality. An example of this could be a publicly available academic paper
|
||||
that describes a new projection. Also, including a numerical test case
|
||||
will make it much easier to verify that an implementation of your
|
||||
requested feature actually works as you expect.
|
||||
|
||||
Note that not all feature requests are accepted.
|
||||
|
||||
Write documentation
|
||||
-------------------
|
||||
|
||||
PROJ is in dire need of better documentation. Any contributiions of
|
||||
documentation are greatly appreaciated. The PROJ documentation is
|
||||
available on `proj4.org <ttp://proj4.org>`__. The website is generated
|
||||
with `Sphinx <http://www.sphinx-doc.org/en/stable/>`__. Contributions to
|
||||
the documentation should be made as `Pull
|
||||
Requests <https://github.com/OSGeo/proj.4/pulls>`__ on GitHub.
|
||||
|
||||
If you intend to document one of PROJ's supported projections please
|
||||
use the `Mercator projection <http://proj4.org/projections/merc.html>`__
|
||||
as a template.
|
||||
|
||||
Code contributions
|
||||
------------------
|
||||
|
||||
Code contributions can be either bug fixes or new features. The process
|
||||
is the same for both, so they will be discussed together in this
|
||||
section.
|
||||
|
||||
Making Changes
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
- Create a topic branch from where you want to base your work.
|
||||
- You usually should base your topic branch off of the master branch.
|
||||
- To quickly create a topic branch: ``git checkout -b my-topic-branch``
|
||||
- Make commits of logical units.
|
||||
- Check for unnecessary whitespace with ``git diff --check`` before
|
||||
committing.
|
||||
- Make sure your commit messages are in the `proper
|
||||
format <http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html>`__.
|
||||
- Make sure you have added the necessary tests for your changes.
|
||||
- Make sure that all tests pass
|
||||
|
||||
Submitting Changes
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Push your changes to a topic branch in your fork of the repository.
|
||||
- Submit a pull request to the PROJ repository in the OSGeo
|
||||
organization.
|
||||
- If your pull request fixes/references an issue, include that issue
|
||||
number in the pull request. For example:
|
||||
|
||||
::
|
||||
|
||||
Wiz the bang
|
||||
|
||||
Fixes #123.
|
||||
|
||||
- PROJ developers will look at your patch and take an appropriate
|
||||
action.
|
||||
|
||||
Coding conventions
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Programming language
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
PROJ is developed strictly in ANSI C 89.
|
||||
|
||||
Coding style
|
||||
^^^^^^^^^^^^
|
||||
|
||||
We don't enforce any particular coding style, but please try to keep it
|
||||
as simple as possible. If improving existing code, please try to conform
|
||||
with the style of the locally surrounding code.
|
||||
|
||||
Whitespace
|
||||
^^^^^^^^^^
|
||||
|
||||
Throughout the PROJ code base you will see differing whitespace use.
|
||||
The general rule is to keep whitespace in whatever form it is in the
|
||||
file you are currently editing. If the file has a mix of tabs and space
|
||||
please convert the tabs to space in a separate commit before making any
|
||||
other changes. This makes it a lot easier to see the changes in diffs
|
||||
when evaulating the changed code. New files should use spaces as
|
||||
whitespace.
|
||||
|
||||
File names
|
||||
^^^^^^^^^^
|
||||
|
||||
Files in which projections are implemented are prefixed with an
|
||||
upper-case ``PJ_`` and most other files are prefixed with lower-case
|
||||
``pj_``. Some file deviate from this pattern, most of them dates back to
|
||||
the very early releases of PROJ. New contributions should follow the
|
||||
pj-prefix pattern. Unless there are obvious reasons not to.
|
||||
|
||||
Legalese
|
||||
~~~~~~~~
|
||||
|
||||
Commiters are the front line gatekeepers to keep the code base clear of
|
||||
improperly contributed code. It is important to the PROJ users,
|
||||
developers and the OSGeo foundation to avoid contributing any code to
|
||||
the project without it being clearly licensed under the project license.
|
||||
|
||||
Generally speaking the key issues are that those providing code to be
|
||||
included in the repository understand that the code will be released
|
||||
under the MIT/X license, and that the person providing the code has the
|
||||
right to contribute the code. For the commiter themselves understanding
|
||||
about the license is hopefully clear. For other contributors, the
|
||||
commiter should verify the understanding unless the commiter is very
|
||||
comfortable that the contributor understands the license (for instance
|
||||
frequent contributors).
|
||||
|
||||
If the contribution was developed on behalf of an employer (on work
|
||||
time, as part of a work project, etc) then it is important that an
|
||||
appropriate representative of the employer understand that the code will
|
||||
be contributed under the MIT/X license. The arrangement should be
|
||||
cleared with an authorized supervisor/manager, etc.
|
||||
|
||||
The code should be developed by the contributor, or the code should be
|
||||
from a source which can be rightfully contributed such as from the
|
||||
public domain, or from an open source project under a compatible
|
||||
license.
|
||||
|
||||
All unusual situations need to be discussed and/or documented.
|
||||
|
||||
Commiters should adhere to the following guidelines, and may be
|
||||
personally legally liable for improperly contributing code to the source
|
||||
repository:
|
||||
|
||||
- Make sure the contributor (and possibly employer) is aware of the
|
||||
contribution terms.
|
||||
- Code coming from a source other than the contributor (such as adapted
|
||||
from another project) should be clearly marked as to the original
|
||||
source, copyright holders, license terms and so forth. This
|
||||
information can be in the file headers, but should also be added to
|
||||
the project licensing file if not exactly matching normal project
|
||||
licensing (COPYING).
|
||||
- Existing copyright headers and license text should never be stripped
|
||||
from a file. If a copyright holder wishes to give up copyright they
|
||||
must do so in writing to the foundation before copyright messages are
|
||||
removed. If license terms are changed it has to be by agreement
|
||||
(written in email is ok) of the copyright holders.
|
||||
- Code with licenses requiring credit, or disclosure to users should be
|
||||
added to COPYING.
|
||||
- When substantial contributions are added to a file (such as
|
||||
substantial patches) the author/contributor should be added to the
|
||||
list of copyright holders for the file.
|
||||
- If there is uncertainty about whether a change is proper to
|
||||
contribute to the code base, please seek more information from the
|
||||
project steering committee, or the foundation legal counsel.
|
||||
|
||||
Additional Resources
|
||||
--------------------
|
||||
|
||||
- `General GitHub documentation <http://help.github.com/>`__
|
||||
- `GitHub pull request
|
||||
documentation <https://help.github.com/articles/about-pull-requests/>`__
|
||||
|
||||
Acknowledgements
|
||||
----------------
|
||||
|
||||
The *code contribution* section of this CONTRIBUTING file is inspired by
|
||||
`PDAL's <https://github.com/PDAL/PDAL/blob/master/CONTRIBUTING.md>`__
|
||||
and the *legalese* section is modified from `GDAL contributer
|
||||
guidelines <https://trac.osgeo.org/gdal/wiki/rfc3_commiters>`__
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
.. _bindings:
|
||||
|
||||
********************************************************************************
|
||||
Language bindings
|
||||
********************************************************************************
|
||||
|
||||
PROJ bindings are available for a number of different development platforms.
|
||||
|
||||
Python
|
||||
======
|
||||
`pyproj <http://pypi.python.org/pypi/pyproj>`_:
|
||||
Python interface (wrapper for PROJ)
|
||||
|
||||
|
||||
Ruby
|
||||
=======
|
||||
|
||||
`proj4rb <http://proj4rb.rubyforge.org>`_:
|
||||
Bindings for PROJ in ruby
|
||||
|
||||
TCL
|
||||
========
|
||||
`proj4tcl <http://wiki.tcl.tk/41270>`_:
|
||||
Bindings for PROJ in tcl (critcl source)
|
||||
|
||||
MySQL
|
||||
=====
|
||||
|
||||
`fProj4 <http://sourceforge.net/projects/mysqlscientific/files/fPROJ4/>`_:
|
||||
Bindings for PROJ in MySQL
|
||||
|
||||
|
||||
Excel
|
||||
========
|
||||
|
||||
`proj.xll <https://github.com/jbuonagurio/proj.xll>`_:
|
||||
Excel add-in for PROJ map projections
|
||||
|
||||
Visual Basic
|
||||
==================
|
||||
|
||||
`PROJ VB Wrappers <http://ftp.dfg.ca.gov/Public/BDB/Tools/proj4/proj_api.zip>`_:
|
||||
By Eric G. Miller.
|
||||
@@ -1,30 +0,0 @@
|
||||
.. _cmake:
|
||||
|
||||
********************************************************************************
|
||||
Using PROJ in CMake projects
|
||||
********************************************************************************
|
||||
|
||||
The recommended way to use the PROJ library in a CMake project is to
|
||||
link to the imported library target ``${PROJ4_LIBRARIES}`` provided by
|
||||
the CMake configuration which comes with the library. Typical usage is:
|
||||
|
||||
.. code::
|
||||
|
||||
find_package(PROJ4)
|
||||
|
||||
target_link_libraries(MyApp ${PROJ4_LIBRARIES})
|
||||
|
||||
By adding the imported library target ``${PROJ4_LIBRARIES}`` to the
|
||||
target link libraries, CMake will also pass the include directories to
|
||||
the compiler. This requires that you use CMake version 2.8.11 or later.
|
||||
If you are using an older version of CMake, then add
|
||||
|
||||
.. code::
|
||||
|
||||
include_directories(${PROJ4_INCLUDE_DIRS})
|
||||
|
||||
The CMake command ``find_package`` will look for the configuration in a
|
||||
number of places. The lookup can be adjusted for all packages by setting
|
||||
the cache variable or environment variable ``CMAKE_PREFIX_PATH``. In
|
||||
particular, CMake will consult (and set) the cache variable
|
||||
``PROJ4_DIR``.
|
||||
@@ -1,7 +0,0 @@
|
||||
.. _errorhandling:
|
||||
|
||||
================================================================================
|
||||
Error handling
|
||||
================================================================================
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
.. _development:
|
||||
|
||||
================================================================================
|
||||
Development
|
||||
================================================================================
|
||||
|
||||
These pages are primarily focused towards developers either contributing to the
|
||||
PROJ project or using the library in their own software.
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
quickstart
|
||||
transformations
|
||||
errorhandling
|
||||
threads
|
||||
reference/index
|
||||
cmake
|
||||
bindings
|
||||
migration
|
||||
@@ -1,193 +0,0 @@
|
||||
.. _API_migration:
|
||||
|
||||
================================================================================
|
||||
Version 4 to 5 API Migration
|
||||
================================================================================
|
||||
|
||||
This is a transition guide for developers wanting to migrate their code to use
|
||||
PROJ version 5.
|
||||
|
||||
|
||||
Background
|
||||
###############################################################################
|
||||
|
||||
Before we go on, a bit of background is needed. The new API takes a different
|
||||
view of the world than the old because it is needed in order to obtain high
|
||||
accuracy transformations. The old API is constructed in such a way that any transformation
|
||||
between two coordinate reference systems *must* pass through the ill-defined
|
||||
WGS84 reference frame, using it as a hub. The new API does away with this limitation to
|
||||
transformations in PROJ. It is still possible to do that type of transformations
|
||||
but in many cases there will be a better alternative.
|
||||
|
||||
The world view represented by the old API is always sufficient if all you care about is
|
||||
meter level accuracy - and in many cases it will provide much higher accuracy
|
||||
than that. But the view that “WGS84 is the *true* foundation of the world, and
|
||||
everything else can be transformed natively to and from WGS84” is inherently flawed.
|
||||
|
||||
First and foremost because any time WGS84 is mentioned, you should ask yourself
|
||||
“Which of the six WGS84 realizations are we talking about here?”.
|
||||
|
||||
Second, because for many (especially legacy) systems, it may not be straightforward
|
||||
to transform to WGS84 (or actually ITRF-something, ETRS-something or NAD-something
|
||||
which appear to be the practical meaning of the term WGS84 in everyday PROJ related
|
||||
work), while centimeter-level accurate transformations may exist between pairs of
|
||||
older systems.
|
||||
|
||||
The concept of a hub reference frame (“datum”) is not inherently bad, but in many
|
||||
cases you need to handle and select that datum with more care than the old API allows.
|
||||
The primary aim of the new API is to allow just that. And to do that, you must realize
|
||||
that the world is inherently 4 dimensional. You may in many cases assume one or more of
|
||||
the coordinates to be constant, but basically, to obtain geodetic accuracy transformations,
|
||||
you need to work in 4 dimensions.
|
||||
|
||||
Now, having described the background for introducing the new API, let's try to show
|
||||
how to use it. First note that in order to go from system A to system B, the old API
|
||||
starts by doing an **inverse** transformation from system A to WGS84, then does a
|
||||
**forward** transformation from WGS84 to system B.
|
||||
|
||||
With ``cs2cs`` being the command line interface to the old API, and ``cct`` being the same
|
||||
for the new, this example of doing the same thing in both world views will should give
|
||||
an idea of the differences:
|
||||
|
||||
::
|
||||
|
||||
$ echo 300000 6100000 | cs2cs +proj=utm +zone=33 +ellps=GRS80 +to +proj=utm +zone=32 +ellps=GRS80
|
||||
683687.87 6099299.66 0.00
|
||||
|
||||
|
||||
$ echo 300000 6100000 0 0 | cct +proj=pipeline +step +inv +proj=utm +zone=33 +ellps=GRS80 +step +proj=utm +zone=32 +ellps=GRS80
|
||||
683687.8667 6099299.6624 0.0000 0.0000
|
||||
|
||||
Lookout for the ``+inv`` in the first ``+step``, indicating an inverse transform.
|
||||
|
||||
|
||||
Code example
|
||||
###############################################################################
|
||||
|
||||
The difference between the old and new API is shown here with a few examples. Below
|
||||
we implement the same program with the two different API's. The program reads
|
||||
input latitude and longitude from the command line and convert them to
|
||||
projected coordinates with the Mercator projection.
|
||||
|
||||
We start by writing the program for PROJ v. 4:
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
#include <proj_api.h>
|
||||
|
||||
main(int argc, char **argv) {
|
||||
projPJ pj_merc, pj_latlong;
|
||||
double x, y;
|
||||
|
||||
if (!(pj_merc = pj_init_plus("+proj=merc +ellps=clrk66 +lat_ts=33")) )
|
||||
return 1;
|
||||
if (!(pj_latlong = pj_init_plus("+proj=latlong +ellps=clrk66")) )
|
||||
return 1;
|
||||
|
||||
while (scanf("%lf %lf", &x, &y) == 2) {
|
||||
x *= DEG_TO_RAD;
|
||||
y *= DEG_TO_RAD;
|
||||
p = pj_transform(pj_latlong, pj_merc, 1, 1, &x, &y, NULL );
|
||||
printf("%.2f\t%.2f\n", x, y);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
The same program implemented using PROJ v. 5:
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
#include <proj.h>
|
||||
|
||||
main(int argc, char **argv) {
|
||||
PJ *P;
|
||||
PJ_COORD c;
|
||||
|
||||
P = proj_create(PJ_DEFAULT_CTX, "+proj=merc +ellps=clrk66 +lat_ts=33");
|
||||
if (P==0)
|
||||
return 1;
|
||||
|
||||
while (scanf("%lf %lf", &c.lp.lam, &c.lp.phi) == 2) {
|
||||
c.lp.lam = proj_todeg(c.lp.lam);
|
||||
c.lp.phi = proj_todeg(c.lp.phi);
|
||||
c = proj_trans(P, PJ_FWD, c);
|
||||
printf("%.2f\t%.2f\n", c.xy.x, c.xy.y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Looking at the two different programs, there's a few immediate
|
||||
differences that catches the eye. First off, the included header file describing
|
||||
the API has changed from ``proj_api.h`` to simply ``proj.h``. All functions in ``proj.h``
|
||||
belongs to the ``proj_`` namespace.
|
||||
|
||||
With the new API also comes new datatypes. E.g. the transformation object ``projPJ``
|
||||
which has been changed to a pointer of type ``PJ``. This is done to highlight the
|
||||
actual nature of the object, instead of hiding it away behind a typedef. New data
|
||||
types for handling coordinates have also been introduced. In the above example we
|
||||
use the ``PJ_COORD``, which is a union of various types. The benefit of this is that
|
||||
it is possible to use the various structs in the union to communicate what state
|
||||
the data is in at different points in the program. For instance as in the above
|
||||
example where the coordinate is read from STDIN as a geodetic coordinate,
|
||||
communicated to the reader of the code by using the ``c.lp`` struct.
|
||||
After it has been projected we print it to STDOUT by accessing the individual
|
||||
elements in ``c.xy`` to illustrate that the coordinate is now in projected space.
|
||||
Data types are prefixed with `PJ_`.
|
||||
|
||||
The final, and perhaps biggest, change is that the fundamental concept of
|
||||
transformations in PROJ are now handled in a single transformation object (``PJ``)
|
||||
and not by stating the source and destination systems as previously. It is of
|
||||
course still possible to do just that, but the transformation object now
|
||||
captures the whole transformation from source to destination in one. In the
|
||||
example with the old API the source system is described as
|
||||
``+proj=latlon +ellps=clrk66`` and the destination system is described as
|
||||
``+proj=merc +ellps=clrk66 +lat_ts=33``. Since the Mercator projection accepts
|
||||
geodetic coordinates as its input, the description of the source in this case
|
||||
is superflous. We use that to our advantage in the new API and simply state
|
||||
the destination. This is simple at a glance, but is actually a big conceptual
|
||||
change. We are now focused on the path between two systems instead of what the
|
||||
source and destination systems are.
|
||||
|
||||
Function mapping from old to new API
|
||||
###############################################################################
|
||||
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| **Old API functions** | **New API functions** |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_fwd | proj_trans |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_inv | proj_trans |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_fwd3 | proj_trans |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_inv3 | proj_trans |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_transform | proj_trans_array or proj_trans_generic|
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_init | proj_create |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_init_plus | proj_create |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_free | proj_destroy |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_is_latlong | proj_angular_output |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_is_geocent | proj_angular_outout |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_get_def | proj_pj_info |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_latlong_from_proj | *No equivalent* |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_set_finder | *No equivalent* |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_set_searchpath | *No equivalent* |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_deallocate_grids | *No equivalent* |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_strerrno | *No equivalent* |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_get_errno_ref | proj_errno |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
| pj_get_release | proj_info |
|
||||
+---------------------------------------+---------------------------------------+
|
||||
@@ -1,100 +0,0 @@
|
||||
.. _dev_quickstart:
|
||||
|
||||
================================================================================
|
||||
Quick start
|
||||
================================================================================
|
||||
|
||||
This is a short introduction to the PROJ API. In the following section we
|
||||
create a simple program that transforms a geodetic coordinate to UTM and back
|
||||
again. The program is explained a few lines at a time. The complete program can
|
||||
be seen at the end of the section.
|
||||
|
||||
See the following sections for more in-depth descriptions of different parts of
|
||||
the PROJ API or consult the :doc:`API reference <reference/index>` for specifics.
|
||||
|
||||
Before the PROJ API can be used it is necessary to include the ``proj.h`` header
|
||||
file. Here ``stdio.h`` is also included so we can print some text to the screen:
|
||||
|
||||
.. literalinclude:: ../../../examples/pj_obs_api_mini_demo.c
|
||||
:language: c
|
||||
:lines: 39-40
|
||||
|
||||
Let's declare a few variables that'll be used later in the program. Each variable
|
||||
will be discussed below.
|
||||
See the :doc:`reference for more info on data types <reference/datatypes>`.
|
||||
|
||||
.. literalinclude:: ../../../examples/pj_obs_api_mini_demo.c
|
||||
:language: c
|
||||
:lines: 43-45
|
||||
:dedent: 4
|
||||
|
||||
For use in multi-threaded programs the ``PJ_CONTEXT`` threading-context is used.
|
||||
In this particular example it is not needed, but for the sake of completeness
|
||||
it created here. The section on :doc:`threads <threads>` discusses
|
||||
this in detail.
|
||||
|
||||
.. literalinclude:: ../../../examples/pj_obs_api_mini_demo.c
|
||||
:language: c
|
||||
:lines: 48
|
||||
:dedent: 4
|
||||
|
||||
Next we create the ``PJ`` transformation object ``P`` with the function
|
||||
``proj_create``. ``proj_create`` takes the threading context ``C`` created above,
|
||||
and a proj-string that defines the desired transformation. Here we transform
|
||||
from geodetic coordinate to UTM zone 32N.
|
||||
It is recommended to create one threading-context per thread used by the program.
|
||||
This ensures that all ``PJ`` objects created in the same context will be sharing
|
||||
resources such as error-numbers and loaded grids.
|
||||
In case the creation of the ``PJ`` object fails an error message is displayed and
|
||||
the program returns. See :doc:`errorhandling` for further
|
||||
details.
|
||||
|
||||
.. literalinclude:: ../../../examples/pj_obs_api_mini_demo.c
|
||||
:language: c
|
||||
:lines: 50-52
|
||||
:dedent: 4
|
||||
|
||||
PROJ uses it's own data structures for handling coordinates. Here we use a
|
||||
``PJ_COORD`` which is easily assigned with the function ``proj_coord``. Note
|
||||
that the input values are converted to radians with ``proj_torad``. This is
|
||||
necessary since PROJ is using radians internally. See :doc:`transformations`
|
||||
for further details.
|
||||
|
||||
.. literalinclude:: ../../../examples/pj_obs_api_mini_demo.c
|
||||
:language: c
|
||||
:lines: 56
|
||||
:dedent: 4
|
||||
|
||||
The coordinate defined above is transformed with ``proj_trans_coord``. For this
|
||||
a ``PJ`` object, a transformation direction (either forward or inverse) and the
|
||||
coordinate is needed. The transformed coordinate is returned in ``b``.
|
||||
Here the forward (``PJ_FWD``) transformation from geodetic to UTM is made.
|
||||
|
||||
.. literalinclude:: ../../../examples/pj_obs_api_mini_demo.c
|
||||
:language: c
|
||||
:lines: 59-60
|
||||
:dedent: 4
|
||||
|
||||
The inverse transformation (UTM to geodetic) is done similar to above,
|
||||
this time using ``PJ_INV`` as the direction.
|
||||
|
||||
.. literalinclude:: ../../../examples/pj_obs_api_mini_demo.c
|
||||
:language: c
|
||||
:lines: 61-62
|
||||
:dedent: 4
|
||||
|
||||
Before ending the program the allocated memory needs to be released again:
|
||||
|
||||
.. literalinclude:: ../../../examples/pj_obs_api_mini_demo.c
|
||||
:language: c
|
||||
:lines: 65-66
|
||||
:dedent: 4
|
||||
|
||||
|
||||
A complete compilable version of the above can be seen here:
|
||||
|
||||
.. literalinclude:: ../../../examples/pj_obs_api_mini_demo.c
|
||||
:language: c
|
||||
:linenos:
|
||||
:lines: 39-
|
||||
|
||||
@@ -1,746 +0,0 @@
|
||||
.. _datatypes:
|
||||
|
||||
================================================================================
|
||||
Data types
|
||||
================================================================================
|
||||
|
||||
This section describes the numerous data types in use in PROJ.4. As a rule
|
||||
of thumb PROJ.4 data types are prefixed with ``PJ_``, or in one particular case,
|
||||
is simply called :c:type:`PJ`. A few notable exceptions can be traced
|
||||
back to the very early days of PROJ.4 when the ``PJ_`` prefix was not
|
||||
consistenly used.
|
||||
|
||||
Transformation objects
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
.. c:type:: PJ
|
||||
|
||||
Object containing everything related to a given projection or transformation.
|
||||
As a user of the PROJ.4 library you are only exposed to pointers to this
|
||||
object and the contents is hidden behind the public API. :c:type:`PJ` objects
|
||||
are created with :c:func:`proj_create` and destroyed with
|
||||
:c:func:`proj_destroy`.
|
||||
|
||||
.. c:type:: PJ_DIRECTION
|
||||
|
||||
Enumeration that is used to convey in which direction a given transformation
|
||||
should be performed. Used in transformation function call as described in
|
||||
the section on :ref:`transformation functions <coord_trans_functions>`.
|
||||
|
||||
Forward transformations are defined with the :c:
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef enum proj_direction {
|
||||
PJ_FWD = 1, /* Forward */
|
||||
PJ_IDENT = 0, /* Do nothing */
|
||||
PJ_INV = -1 /* Inverse */
|
||||
} PJ_DIRECTION;
|
||||
|
||||
.. c:member:: PJ_FWD
|
||||
|
||||
Perform transformation in the forward direction.
|
||||
|
||||
.. c:member:: PJ_IDENT
|
||||
|
||||
Identity. Do nothing.
|
||||
|
||||
.. c:member:: PJ_INV
|
||||
|
||||
Perform transformation in the inverse direction.
|
||||
|
||||
.. c:type:: PJ_CONTEXT
|
||||
|
||||
Context objects enable safe multi-threaded usage of PROJ.4. Each :c:type:`PJ`
|
||||
object is connected to a context (if not specified, the default context is
|
||||
used). All operations within a context should be performed in the same thread.
|
||||
:c:type:`PJ_CONTEXT` objects are created with :c:func:`proj_context_create`
|
||||
and destroyed with :c:func:`proj_context_destroy`.
|
||||
|
||||
|
||||
.. c:type:: PJ_AREA
|
||||
|
||||
Opaque object describing an area in which a transformation is performed.
|
||||
|
||||
.. note:: This object is not fully implemented yet. It is to be used with
|
||||
:c:func:`proj_create_crs_to_crs` to select the best transformation
|
||||
between the two input coordinate reference systems.
|
||||
|
||||
2 dimensional coordinates
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Various 2-dimensional coordinate data types.
|
||||
|
||||
.. c:type:: PJ_LP
|
||||
|
||||
Geodetic coordinate, latitude and longitude. Usually in radians.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct { double lam, phi; } PJ_LP;
|
||||
|
||||
.. c:member:: double PJ_LP.lam
|
||||
|
||||
Longitude. Lambda.
|
||||
|
||||
.. c:member:: double PJ_LP.phi
|
||||
|
||||
Latitude. Phi.
|
||||
|
||||
|
||||
.. c:type:: PJ_XY
|
||||
|
||||
2-dimensional cartesian coordinate.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct { double x, y; } PJ_XY;
|
||||
|
||||
|
||||
.. c:member:: double PJ_XY.x
|
||||
|
||||
Easting.
|
||||
|
||||
.. c:member:: double PJ_XY.y
|
||||
|
||||
Northing.
|
||||
|
||||
|
||||
.. c:type:: PJ_UV
|
||||
|
||||
2-dimensional generic coordinate. Usually used when contents can be either
|
||||
a :c:type:`PJ_XY` or :c:type:`PJ_LP`.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct {double u, v; } PJ_UV;
|
||||
|
||||
|
||||
.. c:member:: double PJ_UV.u
|
||||
|
||||
Longitude or easting, depending on use.
|
||||
|
||||
.. c:member:: double PJ_UV.v
|
||||
|
||||
Latitude or northing, depending on use.
|
||||
|
||||
|
||||
3 dimensional coordinates
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
The following data types are the 3-dimensional equivalents to the data
|
||||
types above.
|
||||
|
||||
.. c:type:: PJ_LPZ
|
||||
|
||||
3-dimensional version of :c:type:`PJ_LP`. Holds longitude, latitude and
|
||||
a vertical component.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct { double lam, phi, z; } PJ_LPZ;
|
||||
|
||||
.. c:member:: double PJ_LPZ.lam
|
||||
|
||||
Longitude. Lambda.
|
||||
|
||||
.. c:member:: double PJ_LPZ.phi
|
||||
|
||||
Latitude. Phi.
|
||||
|
||||
.. c:member:: double PJ_LPZ.z
|
||||
|
||||
Vertical component.
|
||||
|
||||
|
||||
.. c:type:: PJ_XYZ
|
||||
|
||||
Cartesian coordinate in 3 dimensions. Extension of :c:type:`PJ_XY`.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct { double x, y, z; } PJ_XYZ;
|
||||
|
||||
.. c:member:: double PJ_XYZ.x
|
||||
|
||||
Easting or the X component of a 3D cartesian system.
|
||||
|
||||
.. c:member:: double PJ_XYZ.y
|
||||
|
||||
Northing or the Y component of a 3D cartesian system.
|
||||
|
||||
.. c:member:: double PJ_XYZ.z
|
||||
|
||||
Vertical component or the Z component of a 3D cartesian system.
|
||||
|
||||
|
||||
.. c:type:: PJ_UVW
|
||||
|
||||
3-dimensional extension of :c:type:`PJ_UV`.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct {double u, v, w; } PJ_UVW;
|
||||
|
||||
.. c:member:: double PJ_UVW.u
|
||||
|
||||
Longitude or easting, depending on use.
|
||||
|
||||
.. c:member:: double PJ_UVW.v
|
||||
|
||||
Latitude or northing, depending on use.
|
||||
|
||||
.. c:member:: double PJ_UVW.w
|
||||
|
||||
Vertical component.
|
||||
|
||||
|
||||
Spatiotemporal coordinate types
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
The following data types are extensions of the triplets above into the time
|
||||
domain.
|
||||
|
||||
|
||||
.. c:type:: PJ_LPZT
|
||||
|
||||
Spatiotemporal version of :c:type:`PJ_LPZ`.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct {
|
||||
double lam;
|
||||
double phi;
|
||||
double z;
|
||||
double t;
|
||||
} PJ_LPZT;
|
||||
|
||||
|
||||
.. c:member:: double PJ_LPZT.lam
|
||||
|
||||
Longitude.
|
||||
|
||||
.. c:member:: double PJ_LPZT.phi
|
||||
|
||||
Latitude
|
||||
|
||||
.. c:member:: double PJ_LPZT.z
|
||||
|
||||
Vertical component.
|
||||
|
||||
.. c:member:: double PJ_LPZT.t
|
||||
|
||||
Time component.
|
||||
|
||||
.. c:type:: PJ_XYZT
|
||||
|
||||
Generic spatiotemporal coordinate. Usefull for e.g. cartesian coordinates with
|
||||
an attached time-stamp.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct {
|
||||
double x;
|
||||
double y;
|
||||
double z;
|
||||
double t;
|
||||
} PJ_XYZT;
|
||||
|
||||
|
||||
.. c:member:: double PJ_XYZT.x
|
||||
|
||||
Easting or the X component of a 3D cartesian system.
|
||||
|
||||
.. c:member:: double PJ_XYZT.y
|
||||
|
||||
Northing or the Y component of a 3D cartesian system.
|
||||
|
||||
.. c:member:: double PJ_XYZT.z
|
||||
|
||||
Vertical or the Z component of a 3D cartesian system.
|
||||
|
||||
.. c:member:: double PJ_XYZT.t
|
||||
|
||||
Time component.
|
||||
|
||||
|
||||
.. c:type:: PJ_UVWT
|
||||
|
||||
Spatiotemporal version of :c:type:`PJ_UVW`.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct { double u, v, w, t; } PJ_UVWT;
|
||||
|
||||
.. c:member:: double PJ_UVWT.e
|
||||
|
||||
First horizontal component.
|
||||
|
||||
.. c:member:: double PJ_UVWT.n
|
||||
|
||||
Second horizontal component.
|
||||
|
||||
.. c:member:: double PJ_UVWT.w
|
||||
|
||||
Vertical component.
|
||||
|
||||
.. c:member:: double PJ_UVWT.t
|
||||
|
||||
Temporal component.
|
||||
|
||||
|
||||
Ancillary types for geodetic computations
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
.. c:type:: PJ_OPK
|
||||
|
||||
Rotations, for instance three euler angles.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct { double o, p, k; } PJ_OPK;
|
||||
|
||||
.. c:member:: double PJ_OPK.o
|
||||
|
||||
First rotation angle, omega.
|
||||
|
||||
.. c:member:: double PJ_OPK.p
|
||||
|
||||
Second rotation angle, phi.
|
||||
|
||||
.. c:member:: double PJ_OPK.k
|
||||
|
||||
Third rotation angle, kappa.
|
||||
|
||||
|
||||
Complex coordinate types
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
.. c:type:: PJ_COORD
|
||||
|
||||
General purpose coordinate union type, applicable in two, three and four dimensions.
|
||||
This is the default coordinate datatype used in PROJ.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef union {
|
||||
double v[4];
|
||||
PJ_XYZT xyzt;
|
||||
PJ_UVWT uvwt;
|
||||
PJ_LPZT lpzt;
|
||||
PJ_XYZ xyz;
|
||||
PJ_UVW uvw;
|
||||
PJ_LPZ lpz;
|
||||
PJ_XY xy;
|
||||
PJ_UV uv;
|
||||
PJ_LP lp;
|
||||
} PJ_COORD ;
|
||||
|
||||
.. c:member:: double v[4]
|
||||
|
||||
Generic four-dimensional vector.
|
||||
|
||||
.. c:member:: PJ_XYZT PJ_COORD.xyzt
|
||||
|
||||
Spatiotemporal cartesian coordinate.
|
||||
|
||||
.. c:member:: PJ_UVWT PJ_COORD.uvwt
|
||||
|
||||
Spatiotemporal generic coordinate.
|
||||
|
||||
.. c:member:: PJ_LPZT PJ_COORD.lpzt
|
||||
|
||||
Longitude, latitude, vertical and time components.
|
||||
|
||||
.. c:member:: PJ_XYZ PJ_COORD.xyz
|
||||
|
||||
3-dimensional cartesian coordinate.
|
||||
|
||||
.. c:member:: PJ_UVW PJ_COORD.uvw
|
||||
|
||||
3-dimensional generic coordinate.
|
||||
|
||||
.. c:member:: PJ_LPZ PJ_COORD.lpz
|
||||
|
||||
Longitude, latitude and vertical component.
|
||||
|
||||
.. c:member:: PJ_XY PJ_COORD.xy
|
||||
|
||||
2-dimensional cartesian coordinate.
|
||||
|
||||
.. c:member:: PJ_UV PJ_COORD.uv
|
||||
|
||||
2-dimensional generic coordinate.
|
||||
|
||||
.. c:member:: PJ_LP PJ_COORD.lp
|
||||
|
||||
Longitude and latitude.
|
||||
|
||||
|
||||
Projection derivatives
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
.. c:type:: PJ_FACTORS
|
||||
|
||||
Various cartographic properties, such as scale factors, angular distortion
|
||||
and meridian convergence. Calculated with :c:func:`proj_factors`.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct {
|
||||
double meridional_scale;
|
||||
double parallel_scale;
|
||||
double areal_scale;
|
||||
|
||||
double angular_distortion;
|
||||
double meridian_parallel_angle;
|
||||
double meridian_convergence;
|
||||
|
||||
double tissot_semimajor;
|
||||
double tissot_semiminor;
|
||||
|
||||
double dx_dlam;
|
||||
double dx_dphi;
|
||||
double dy_dlam;
|
||||
double dy_dphi;
|
||||
} PJ_FACTORS;
|
||||
|
||||
.. c:member:: double PJ_FACTORS.meridional_scale
|
||||
|
||||
Meridional scale at coordinate :math:`\left(\lambda,\phi\right)`.
|
||||
|
||||
.. c:member:: double PJ_FACTORS.parallel_scale
|
||||
|
||||
Parallel scale at coordinate :math:`\left(\lambda,\phi\right)`.
|
||||
|
||||
.. c:member:: double PJ_FACTORS.areal_scale
|
||||
|
||||
Areal scale factor at coordinate :math:`\left(\lambda,\phi\right)`.
|
||||
|
||||
.. c:member:: double PJ_FACTORS.angular_distortion
|
||||
|
||||
Angular distortion at coordinate :math:`\left(\lambda,\phi\right)`.
|
||||
|
||||
.. c:member:: double PJ_FACTORS.meridian_parallel_angle
|
||||
|
||||
Meridian/parallel angle, :math:`\theta^\prime`, at coordinate :math:`\left(\lambda,\phi\right)`.
|
||||
|
||||
.. c:member:: double PJ_FACTORS.meridian_convergence
|
||||
|
||||
Meridian convergence at coordinate :math:`\left(\lambda,\phi\right)`.
|
||||
Sometimes also described as *grid declination*.
|
||||
|
||||
|
||||
.. c:member:: double PJ_FACTORS.tissot_semimajor
|
||||
|
||||
Maximum scale factor.
|
||||
|
||||
.. c:member:: double PJ_FACTORS.tissot_semiminor
|
||||
|
||||
Minimum scale factor.
|
||||
|
||||
|
||||
.. c:member:: double PJ_FACTORS.dx_dlam
|
||||
|
||||
Partial derivative :math:`\frac{\partial x}{\partial \lambda}` of coordinate
|
||||
:math:`\left(\lambda,\phi\right)`.
|
||||
|
||||
.. c:member:: double PJ_FACTORS.dy_dlam
|
||||
|
||||
Partial derivative :math:`\frac{\partial y}{\partial \lambda}` of coordinate
|
||||
:math:`\left(\lambda,\phi\right)`.
|
||||
|
||||
.. c:member:: double PJ_FACTORS.dx_dphi
|
||||
|
||||
Partial derivative :math:`\frac{\partial x}{\partial \phi}` of coordinate
|
||||
:math:`\left(\lambda,\phi\right)`.
|
||||
|
||||
.. c:member:: double PJ_FACTORS.dy_dphi
|
||||
|
||||
Partial derivative :math:`\frac{\partial y}{\partial \phi}` of coordinate
|
||||
:math:`\left(\lambda,\phi\right)`.
|
||||
|
||||
List structures
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
.. c:type:: PJ_OPERATIONS
|
||||
|
||||
Description a PROJ.4 operation
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
struct PJ_OPERATIONS {
|
||||
char *id; /* operation keyword */
|
||||
PJ *(*proj)(PJ *); /* operation entry point */
|
||||
char * const *descr; /* description text */
|
||||
};
|
||||
|
||||
.. c:member:: char *id
|
||||
|
||||
Operation keyword.
|
||||
|
||||
.. c:member:: PJ *(*op)(PJ *)
|
||||
|
||||
Operation entry point.
|
||||
|
||||
.. c:member:: char * const *
|
||||
|
||||
Description of operation.
|
||||
|
||||
|
||||
.. c:type:: PJ_ELLPS
|
||||
|
||||
Description of ellipsoids defined in PROJ.4
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
struct PJ_ELLPS {
|
||||
char *id;
|
||||
char *major;
|
||||
char *ell;
|
||||
char *name;
|
||||
};
|
||||
|
||||
.. c:member:: char *id
|
||||
|
||||
Keyword name of the ellipsoid.
|
||||
|
||||
.. c:member:: char *major
|
||||
|
||||
Semi-major axis of the ellipsoid, or radius in case of a sphere.
|
||||
|
||||
.. c:member:: char *ell
|
||||
|
||||
Elliptical parameter, e.g. `rf=298.257` or `b=6356772.2`.
|
||||
|
||||
.. c:member:: char *name
|
||||
|
||||
Name of the ellipsoid
|
||||
|
||||
.. c:type:: PJ_UNITS
|
||||
|
||||
Distance units defined in PROJ.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
struct PJ_UNITS {
|
||||
char *id; /* units keyword */
|
||||
char *to_meter; /* multiply by value to get meters */
|
||||
char *name; /* comments */
|
||||
double factor; /* to_meter factor in actual numbers */
|
||||
};
|
||||
|
||||
.. c:member:: char *id
|
||||
|
||||
Keyword for the unit.
|
||||
|
||||
.. c:member:: char *to_meter
|
||||
|
||||
Text representation of the factor that converts a given unit to meters
|
||||
|
||||
.. c:member:: char *name
|
||||
|
||||
Name of the unit.
|
||||
|
||||
.. c:member:: double factor
|
||||
|
||||
Conversion factor that converts the unit to meters.
|
||||
|
||||
.. c:type:: PJ_PRIME_MERIDIANS
|
||||
|
||||
Prime meridians defined in PROJ.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
struct PJ_PRIME_MERIDIANS {
|
||||
char *id;
|
||||
char *defn;
|
||||
};
|
||||
|
||||
.. c:member:: char *id
|
||||
|
||||
Keyword for the prime meridian
|
||||
|
||||
.. c:member:: char *def
|
||||
|
||||
Offset from Greenwich in DMS format.
|
||||
|
||||
Info structures
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
.. c:type:: PJ_INFO
|
||||
|
||||
Struct holding information about the current instance of PROJ. Struct is
|
||||
populated by :c:func:`proj_info`.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct {
|
||||
int major;
|
||||
int minor;
|
||||
int patch;
|
||||
const char *release;
|
||||
const char *version;
|
||||
const char *searchpath;
|
||||
} PJ_INFO;
|
||||
|
||||
.. c:member:: const char *PJ_INFO.release
|
||||
|
||||
Release info. Version number and release date,
|
||||
e.g. "Rel. 4.9.3, 15 August 2016".
|
||||
|
||||
.. c:member:: const char *PJ_INFO.version
|
||||
|
||||
Text representation of the full version number,
|
||||
e.g. "4.9.3".
|
||||
|
||||
.. c:member:: int PJ_INFO.major
|
||||
|
||||
Major version number.
|
||||
|
||||
.. c:member:: int PJ_INFO.minor
|
||||
|
||||
Minor version number.
|
||||
|
||||
.. c:member:: int PJ_INFO.patch
|
||||
|
||||
Patch level of release.
|
||||
|
||||
.. c:member:: const char PJ_INFO.searchpath
|
||||
|
||||
Search path for PROJ. List of directories separated by
|
||||
semicolons (Windows) or colons (non-Windows), e.g.
|
||||
"C:\\Users\\doctorwho;C:\\OSGeo4W64\\share\\proj".
|
||||
Grids and init files are looked for in directories in the search path.
|
||||
|
||||
.. c:type:: PJ_PROJ_INFO
|
||||
|
||||
Struct holding information about a :c:type:`PJ` object. Populated by
|
||||
:c:func:`proj_pj_info`. The :c:type:`PJ_PROJ_INFO` object provides a
|
||||
view into the internals of a :c:type:`PJ`, so once the :c:type:`PJ`
|
||||
is destroyed or otherwise becomes invalid, so does the
|
||||
:c:type:`PJ_PROJ_INFO`
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct {
|
||||
const char *id;
|
||||
const char *description;
|
||||
const char *definition;
|
||||
int has_inverse;
|
||||
double accuracy;
|
||||
} PJ_PROJ_INFO;
|
||||
|
||||
.. c:member:: const char *PJ_PROJ_INFO.id
|
||||
|
||||
Short ID of the operation the :c:type:`PJ` object is based on, that is,
|
||||
what comes afther the ``+proj=`` in a proj-string, e.g. "*merc*".
|
||||
|
||||
.. c:member:: const char *PJ_PROJ_INFO.description
|
||||
|
||||
Long describes of the operation the :c:type:`PJ` object is based on,
|
||||
e.g. "*Mercator Cyl, Sph&Ell lat_ts=*".
|
||||
|
||||
.. c:member:: const char *PJ_PROJ_INFO.definition
|
||||
|
||||
The proj-string that was used to create the :c:type:`PJ` object with,
|
||||
e.g. "*+proj=merc +lat_0=24 +lon_0=53 +ellps=WGS84*".
|
||||
|
||||
.. c:member:: int PJ_PROJ_INFO.has_inverse
|
||||
|
||||
1 if an inverse mapping of the defined operation exists, otherwise 0.
|
||||
|
||||
.. c:member:: double PJ_PROJ_INFO.accuracy
|
||||
|
||||
Expected accuracy of the transformation. -1 if unknown.
|
||||
|
||||
.. c:type:: PJ_GRID_INFO
|
||||
|
||||
Struct holding information about a specific grid in the search path of
|
||||
PROJ. Populated with the function :c:func:`proj_grid_info`.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct {
|
||||
char gridname[32];
|
||||
char filename[260];
|
||||
char format[8];
|
||||
LP lowerleft;
|
||||
LP upperright;
|
||||
int n_lon, n_lat;
|
||||
double cs_lon, cs_lat;
|
||||
} PJ_GRID_INFO;
|
||||
|
||||
.. c:member:: char PJ_GRID_INFO.gridname[32]
|
||||
|
||||
Name of grid, e.g. "*BETA2007.gsb*".
|
||||
|
||||
.. c:member:: char PJ_GRID_INFO
|
||||
|
||||
Full path of grid file, e.g. *"C:\\OSGeo4W64\\share\\proj\\BETA2007.gsb"*
|
||||
|
||||
.. c:member:: char PJ_GRID_INFO.format[8]
|
||||
|
||||
File format of grid file, e.g. "*ntv2*"
|
||||
|
||||
.. c:member:: LP PJ_GRID_INFO.lowerleft
|
||||
|
||||
Geodetic coordinate of lower left corner of grid.
|
||||
|
||||
.. c:member:: LP PJ_GRID_INFO.upperright
|
||||
|
||||
Geodetic coordinate of upper right corner of grid.
|
||||
|
||||
.. c:member:: int PJ_GRID_INFO.n_lon
|
||||
|
||||
Number of grid cells in the longitudinal direction.
|
||||
|
||||
.. c:member:: int PJ_GRID_INFO.n_lat
|
||||
|
||||
Number of grid cells in the latitudianl direction.
|
||||
|
||||
.. c:member:: double PJ_GRID_INFO.cs_lon
|
||||
|
||||
Cell size in the longitudinal direction. In radians.
|
||||
|
||||
.. c:member:: double PJ_GRID_INFO.cs_lat
|
||||
|
||||
Cell size in the latitudinal direction. In radians.
|
||||
|
||||
|
||||
.. c:type:: PJ_INIT_INFO
|
||||
|
||||
Struct holding information about a specific init file in the search path of
|
||||
PROJ. Populated with the function :c:func:`proj_init_info`.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct {
|
||||
char name[32];
|
||||
char filename[260];
|
||||
char version[32];
|
||||
char origin[32];
|
||||
char lastupdate[16];
|
||||
} PJ_INIT_INFO;
|
||||
|
||||
.. c:member:: char PJ_INIT_INFO.name[32]
|
||||
|
||||
Name of init file, e.g. "*epsg*".
|
||||
|
||||
.. c:member:: char PJ_INIT_INFO.filename[260]
|
||||
|
||||
Full path of init file, e.g. "*C:\\OSGeo4W64\\share\\proj\\epsg*"
|
||||
|
||||
.. c:member:: char PJ_INIT_INFO.version[32]
|
||||
|
||||
Version number of init-file, e.g. "*9.0.0*"
|
||||
|
||||
.. c:member:: char PJ_INIT_INFO.origin[32]
|
||||
|
||||
Originating entity of the init file, e.g. "*EPSG*"
|
||||
|
||||
.. c:member:: char PJ_INIT_INFO.lastupdate
|
||||
|
||||
Date of last update of the init-file.
|
||||
@@ -1,270 +0,0 @@
|
||||
.. _api:
|
||||
|
||||
********************************************************************************
|
||||
Deprecated API
|
||||
********************************************************************************
|
||||
|
||||
.. contents:: Contents
|
||||
:depth: 3
|
||||
:backlinks: none
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Procedure ``pj_init()`` selects and initializes a cartographic
|
||||
projection with its argument control parameters. ``argc`` is the number
|
||||
of elements in the array of control strings argv that each contain
|
||||
individual cartographic control keyword assignments (+ proj arguments).
|
||||
The list must contain at least the proj=projection and Earth’s radius or
|
||||
elliptical parameters. If the initialization of the projection is
|
||||
successful a valid address is returned otherwise a NULL value.
|
||||
|
||||
The ``pj_init_plus()`` function operates similarly to ``pj_init()`` but
|
||||
takes a single string containing the definition, with each parameter
|
||||
prefixed with a plus sign. For example
|
||||
``+proj=utm +zone=11 +ellps=WGS84``.
|
||||
|
||||
Once initialization is performed either forward or inverse projections
|
||||
can be performed with the returned value of ``pj_init()`` used as the
|
||||
argument proj. The argument structure projUV values u and v contain
|
||||
respective longitude and latitude or x and y. Latitude and longitude are
|
||||
in radians. If a projection operation fails, both elements of projUV are
|
||||
set to ``HUGE_VAL`` (defined in ``math.h``).
|
||||
|
||||
Note: all projections have a forward mode, but some do not have an
|
||||
inverse projection. If the projection does not have an inverse the
|
||||
projPJ structure element inv will be ``NULL``.
|
||||
|
||||
The ``pj_transform`` function may be used to transform points between
|
||||
the two provided coordinate systems. In addition to converting between
|
||||
cartographic projection coordinates and geographic coordinates, this
|
||||
function also takes care of datum shifts if possible between the source
|
||||
and destination coordinate system. Unlike ``pj_fwd()`` and ``pj_inv()``
|
||||
it is also allowable for the coordinate system definitions
|
||||
``(projPJ *)`` to be geographic coordinate systems (defined as
|
||||
``+proj=latlong``).
|
||||
The x, y and z arrays contain the input values of the points, and are replaced with the output values.
|
||||
The function returns zero on success, or the error number (also in ``pj_errno``)
|
||||
on failure.
|
||||
|
||||
Memory associated with the projection may be freed with ``pj_free()``.
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
The following program reads latitude and longitude values in decimal
|
||||
degrees, performs Mercator projection with a Clarke 1866 ellipsoid and a
|
||||
33° latitude of true scale and prints the projected cartesian values in
|
||||
meters:
|
||||
|
||||
.. code::
|
||||
|
||||
#include <proj_api.h>
|
||||
|
||||
main(int argc, char **argv) {
|
||||
projPJ pj_merc, pj_latlong;
|
||||
double x, y;
|
||||
|
||||
if (!(pj_merc = pj_init_plus("+proj=merc +ellps=clrk66 +lat_ts=33")) )
|
||||
exit(1);
|
||||
if (!(pj_latlong = pj_init_plus("+proj=latlong +ellps=clrk66")) )
|
||||
exit(1);
|
||||
while (scanf("%lf %lf", &x, &y) == 2) {
|
||||
x *= DEG_TO_RAD;
|
||||
y *= DEG_TO_RAD;
|
||||
p = pj_transform(pj_latlong, pj_merc, 1, 1, &x, &y, NULL );
|
||||
printf("%.2f\t%.2f\n", x, y);
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
For this program, an input of ``-16 20.25`` would give a result of
|
||||
``-1495284.21 1920596.79``.
|
||||
|
||||
API Functions
|
||||
-------------
|
||||
|
||||
pj_transform
|
||||
============
|
||||
|
||||
::
|
||||
|
||||
int pj_transform( projPJ srcdefn,
|
||||
projPJ dstdefn,
|
||||
long point_count,
|
||||
int point_offset,
|
||||
double *x,
|
||||
double *y,
|
||||
double *z );
|
||||
|
||||
|
||||
Transform the x/y/z points from the source coordinate system to the
|
||||
destination coordinate system.
|
||||
|
||||
``srcdefn``: source (input) coordinate system.
|
||||
|
||||
``dstdefn``: destination (output) coordinate system.
|
||||
|
||||
``point_count``: the number of points to be processed (the size of the
|
||||
x/y/z arrays).
|
||||
|
||||
``point_offset``: the step size from value to value (measured in
|
||||
doubles) within the x/y/z arrays - normally 1 for a packed array. May be
|
||||
used to operate on xyz interleaved point arrays.
|
||||
|
||||
``x``/``y``/``z``: The array of X, Y and Z coordinate values passed as
|
||||
input, and modified in place for output. The Z may optionally be NULL.
|
||||
|
||||
``return``: The return is zero on success, or a PROJ.4 error code.
|
||||
|
||||
The ``pj_transform()`` function transforms the passed in list of points
|
||||
from the source coordinate system to the destination coordinate system.
|
||||
Note that geographic locations need to be passed in radians, not decimal
|
||||
degrees, and will be returned similarly. The ``z`` array may be passed
|
||||
as NULL if Z values are not available.
|
||||
|
||||
If there is an overall failure, an error code will be returned from the
|
||||
function. If individual points fail to transform - for instance due to
|
||||
being over the horizon - then those x/y/z values will be set to
|
||||
``HUGE_VAL`` on return. Input values that are ``HUGE_VAL`` will not be
|
||||
transformed.
|
||||
|
||||
|
||||
pj_init_plus
|
||||
============
|
||||
|
||||
::
|
||||
|
||||
projPJ pj_init_plus(const char *definition);
|
||||
|
||||
This function converts a string representation of a coordinate system
|
||||
definition into a projPJ object suitable for use with other API
|
||||
functions. On failure the function will return NULL and set pj_errno.
|
||||
The definition should be of the general form
|
||||
``+proj=tmerc +lon_0 +datum=WGS84``. Refer to PROJ.4 documentation and
|
||||
the :ref:`transformation` notes for additional detail.
|
||||
|
||||
Coordinate system objects allocated with ``pj_init_plus()`` should be
|
||||
deallocated with ``pj_free()``.
|
||||
|
||||
|
||||
pj_free
|
||||
=======
|
||||
|
||||
::
|
||||
|
||||
void pj_free( projPJ pj );
|
||||
|
||||
Frees all resources associated with pj.
|
||||
|
||||
|
||||
pj_is_latlong
|
||||
=============
|
||||
|
||||
::
|
||||
|
||||
int pj_is_latlong( projPJ pj );
|
||||
|
||||
Returns TRUE if the passed coordinate system is geographic
|
||||
(``proj=latlong``).
|
||||
|
||||
|
||||
pj_is_geocent
|
||||
=============
|
||||
|
||||
::
|
||||
|
||||
int pj_is_geocent( projPJ pj );``
|
||||
|
||||
Returns TRUE if the coordinate system is geocentric (``proj=geocent``).
|
||||
|
||||
pj_get_def
|
||||
==========
|
||||
|
||||
::
|
||||
|
||||
char *pj_get_def( projPJ pj, int options);``
|
||||
|
||||
Returns the PROJ.4 initialization string suitable for use with
|
||||
``pj_init_plus()`` that would produce this coordinate system, but with
|
||||
the definition expanded as much as possible (for instance ``+init=`` and
|
||||
``+datum=`` definitions).
|
||||
|
||||
pj_latlong_from_proj
|
||||
====================
|
||||
|
||||
::
|
||||
|
||||
projPJ pj_latlong_from_proj( projPJ pj_in );``
|
||||
|
||||
Returns a new coordinate system definition which is the geographic
|
||||
coordinate (lat/long) system underlying ``pj_in``.
|
||||
|
||||
pj_set_finder
|
||||
==============
|
||||
|
||||
::
|
||||
|
||||
void pj_set_finder( const char *(*new_finder)(const char *) );``
|
||||
|
||||
Install a custom function for finding init and grid shift files.
|
||||
|
||||
pj_set_searchpath
|
||||
=================
|
||||
|
||||
::
|
||||
|
||||
void pj_set_searchpath ( int count, const char **path );``
|
||||
|
||||
Set a list of directories to search for init and grid shift files.
|
||||
|
||||
|
||||
pj_deallocate_grids
|
||||
===================
|
||||
|
||||
::
|
||||
|
||||
void pj_deallocate_grids( void );``
|
||||
|
||||
Frees all resources associated with loaded and cached datum shift grids.
|
||||
|
||||
|
||||
pj_strerrno
|
||||
===========
|
||||
|
||||
::
|
||||
|
||||
char *pj_strerrno( int );``
|
||||
|
||||
Returns the error text associated with the passed in error code.
|
||||
|
||||
pj_get_errno_ref
|
||||
================
|
||||
|
||||
::
|
||||
|
||||
int *pj_get_errno_ref( void );``
|
||||
|
||||
Returns a pointer to the global pj\_errno error variable.
|
||||
|
||||
pj_get_release
|
||||
==============
|
||||
|
||||
::
|
||||
|
||||
const char *pj_get_release( void );``
|
||||
|
||||
Returns an internal string describing the release version.
|
||||
|
||||
Obsolete Functions
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
``XY pj_fwd( LP lp, PJ *P );``
|
||||
|
||||
``LP pj_inv( XY xy, PJ *P );``
|
||||
|
||||
``projPJ pj_init(int argc, char **argv);``
|
||||
|
||||
.. _more info: pj_transform
|
||||
|
||||