Hi Michaël
thanks for the explanation. It was a bit confusing (not only for me) when
studing this topic
--------------------------------
EPS codes

http://www.ihsenergy.com/epsg/geodetic2.html
reading this page it seems that EPSG code range are:
0 - 32767 and 6,000,000 -  6,999,999 (since ver. 6.6)

---------------------------------

regarding SRID vs CUSTOM,

According to Wikipedia SRID "is a unique value used to unambiguously
identify projected, unprojected, and local spatial coordinate system
definitions"
https://en.wikipedia.org/wiki/Spatial_reference_system#Identifier
(In that case it seems to be the equivalent  of ESRI WKID (
https://developers.arcgis.com/javascript/3/jsapi/spatialreference-amd.html).

while

CUSTOM, as I understood, is a local projection (
http://wiki.gis.com/wiki/index.php/Custom_projection).
ESRI defines CUSTOM codes ( 200000-209199) which are outside the "official
ones".
 EPSG uses a different "authority acronym" SR-ORG to define them so there
are SR-ORG/ESRI overlaping codes.
Thi is a new proposal, that needs to be inspect, anyhow

a) recognized as integer
UNKNOWN: -1, 0 : UNKNOWN
EPSG: 1-32766  [ or 1026-32766(**) ]   and 5999999-2147483647
ESRI: 33000-200000 : ESRI registry
France Géoportail: 310024802 to 310915814 - France Géoportail , not
recognized by EPSG, the info seems quite outdated (
http://www.wms.lautre.net/projgp.html)

SRID:  other  (no intention to define whether the codes are defined by
users (CUSTOM) or not, no intention to define if it belongs to other
authority that EPSG/ESRI)
b) recognized as string
 I would let it blank, even if we only have INGF codes.

Peppe

(*) according to this page (http://www.wms.lautre.net/projgp.html)
(**) http://www.ihsenergy.com/epsg/geodetic2.html

2016-09-04 12:54 GMT+02:00 Michaël Michaud <m.michael.mich...@orange.fr>:

> Hi Peppe,
> Just wonder why you want to retrieve authorities from srid ?
> If it is important, why not adding authority in the srid.txt file ?
> It is quite impossible to get authority from code as codes are supposed to
> be unique for a single authority only.
> By chance, EPSG is so well-known that most implementions (ESRI, GeoTIFF,
> PostGIS) take care to use the same code for the same CRS, and add new CRS
> in a specific range of codes unused by EPSG. But every implementor has its
> own rules, and what I've found is very confusing.
>
> negative srid : unused, except -1 which used to mean UNKNOWN in postgis 1.x
> 0 : means UNKNOWN in GeoTIFF and PostGIS 2.x
> 1-2000 : unused but valid EPSG codes for CRS
> 2000-32766 : EPSG codes also used by ESRI (WKID), PostGIS, GeoTIFF for the
> same CRSs...
>         In GeoTIFF, projected CRS codes seem to start at 20000, but
> smaller EPSG codes exist in EPSG database
>         note : SR-ORG codes (1-9000) are overlapping EPSG code range
> 32767 : user-defined in GeoTIFF implementation ( don't know what is the
> difference between user-defined and private-user implementation ?)
> 32768-max :
>         GeoTIFF : 32768-65535 : private user implementation
>         ESRI : 32768 - 33000 : unused ?
>         ESRI : 33000-200000 : ESRI authority
>         ESRI : 200000-209199 : ESRI Custom codes
>         PostGIS : 32768 - 910000 : ? (can be used for ESRI WKID ?)
>         PostGIS : 910000 - 998999 : Custom codes
>         SpatialReference : EPSG:61000000-69000000 (superseded, not
> referenced in EPSG database)
>
> GeoTIFF Projection and ProjCoordTrans are other types of beast. They do
> not define a Coordinate Reference System.
> What I would keep :
> -1, 0 : UNKNOWN
> 1-32766 : EPSG registry
> 33000-200000 : ESRI registry
> other : CUSTOM/SRID
>
> Not sure why you distinguish SRID from CUSTOM. Have they different
> meaning/usage ?
>
> Michaël
>
>
> Le 03/09/2016 à 19:43, Giuseppe Aruta a écrit :
>
> Maybe I should correct on this way - to save compatibility with geotif
>
> Code :
>
> integer
> EPSG : [2000..32767] or [5999999..2147483647]
> ESRI : [32999..200000]
> GEOTIF PROJECTION: [1..28]*
> CUSTOM : [29..1999] or [32769..32999] or [200000..6999999]
> NOT DEFINED: [-1]
> USER DEFINED: [0] or [32768]
>
> not integer
> IGNF:
>
> * See http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/GeoTiff.html.
> The geotif method in Proj Utils class, in the GeoKeyDirectoryTag, scans
> geographic/geocentric  projection if no projected value is recognized
>
> Peppe
>
> 2016-09-03 12:22 GMT+02:00 Giuseppe Aruta <giuseppe.ar...@gmail.com>:
>
>> I understand. I don't do any work today. And wait for your commits
>> Peppe
>>
>> 2016-09-03 12:01 GMT+02:00 Michaël Michaud <m.michael.mich...@orange.fr>:
>>
>>> Hi Peppe,
>>>
>>> If you're not changing ProjUtils class today, I'll make some refactoring.
>>> Would be nice if you can double check after my commit.
>>>
>>> About test on srid integer, there is not much of a problem. Just a small
>>> inconsistency betwwen comment and code on CUSTOM authority
>>>
>>> Comment :
>>> CUSTOM : [200000..209199]
>>>
>>> Code :
>>> EPSG : ]-∞..32768[ or ]5999999..2147483647]
>>> ESRI : ]32999..200000[
>>> CUSTOM : [32768..32999] or [200000..5999999]
>>>
>>> Michaël
>>>
>>> Le 02/09/2016 à 16:00, Giuseppe Aruta a écrit :
>>>
>>> Hi Michaël,
>>> thanks for the suggestions.
>>>
>>> >srid.txt encoding
>>> I upgraded SVN repository with a UTF-8 version.
>>>
>>> >I noticed that tests done on the srid integer value are not consistent
>>> between the comments and the code.
>>> Sorry. I am still  not familiar with some developing terminology (and
>>> the usage of Java).
>>> Does it means I should remove those comments from that position?
>>>
>>> >ProjUtils is a very big class and contains redundant code
>>> Yes. During the long syage of thge class I added many extra code. Right
>>> now I realized that readSRSFromAuxiliaryFile_1 method was not used (and I
>>> removed from repository). I will use your suggestions and make it simpler
>>> and smaller, following OJ philosophy.
>>>
>>> Thanks again
>>>
>>> Peppe
>>>
>>> 2016-09-02 0:05 GMT+02:00 Michaël Michaud <m.michael.mich...@orange.fr>:
>>>
>>>> Hi Peppe,
>>>>
>>>> Thanks for the work. Here are some suggestions.
>>>>
>>>> I noticed that tests done on the srid integer value are not consistent
>>>> between the comments (and the referenced site
>>>> http://help.arcgis.com/en/arcgisserver/10.0/apis/soap/whnjs.
>>>> htm#SOAP_Geometry_FindSRByWKID.htm) and the code.
>>>>
>>>> Also I think there is a problem with srid.txt encoding (with the
>>>> addition of IGNF registry which includes non ASCII characters). I suggest
>>>> that we code the file  in UTF-8 (it is currently recognized as ISO 8859-1
>>>> by my IDE) and read it as UTF-8 so that it behaves similarly on windows or
>>>> linux (using *InputStreamReader
>>>> <http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#InputStreamReader-java.io.InputStream-java.lang.String->*
>>>> *(**InputStream
>>>> <http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html>*
>>>> * in, **String
>>>> <http://docs.oracle.com/javase/8/docs/api/java/lang/String.html>*
>>>> * charset*Name))
>>>>
>>>> ProjUtils is a very big class and contains redundant code. Maybe a few
>>>> helper methods would help
>>>> - getSRSDef(int srid) // to get SRSDef from SRID (computed 3 times in
>>>> the file)
>>>> - normalizeSRSName(String srs) // to normalize SRSName writing
>>>> (whitespaces, separators...)
>>>> - getSRSDef(String prjName) // read from srid.txt
>>>> ...
>>>>
>>>> In readSRSFromAuxiliaryFile_1 and readSRSFromAuxiliaryFile methods,
>>>> tests could be organized this way
>>>>
>>>> projectSourceFilePrj
>>>> projectSourceRFilePrj // not used in readSRSFromAuxiliaryFile_1
>>>> projectSourceRFileAux
>>>>
>>>> // List<String> fileList : useless !
>>>>
>>>> if (projectSourceFilePrj.exists()) {/**/}
>>>> else if (projectSourceRFilePrj .exists()) {/**/}
>>>> else if (projectSourceRFileAux.exists()) {/**/}
>>>> else
>>>>
>>>> // if (!prjname.isEmpty()) {/* */} : no more needed if you wrote a
>>>> getSRSDef(String prjName) method
>>>>
>>>> Michaël
>>>>
>>>> Le 01/09/2016 à 07:23, Giuseppe Aruta a écrit :
>>>>
>>>> Hi all,
>>>> sorry for the long time I took to answer.
>>>> I understood the difficulties. My idea was limited to work on the
>>>> measurement part of Coordinate systems (something that I started to do on
>>>> my Measurement plugin). The reprojection part was put aside.
>>>> After reading the opinions of all, I decided to abandon the idea to a
>>>> add projection ID to the Task and to limit the work in small steps only at
>>>> layer level, without core modifications.
>>>> I added to projection detection of layers (LayerProperty and
>>>> RasterLayerProperty plugins) the capability to show the relative  measure
>>>> unit.
>>>> It was easy as it required only some extra info on the SRID registry
>>>> file (org.openjump.core.ccordsys.utils.srid.txt)
>>>> In the future I will work on modified (measurement, zoom, scale) plugin
>>>> that detect that measure unit , Measure Plugin will remain the main place
>>>> for this work.
>>>> Best regards
>>>> Peppe
>>>>
>>>> @Michael I added on SRID registry file also IGNF and IGN Gèoportail
>>>> codes, trying to set the most possible common "synonimous". But I didn't
>>>> test it as I didn't find datas on that Authority. Could you give a quick
>>>> look, please. I took the informaion ffor IGN Gèoportail form this page (
>>>> http://www.wms.lautre.net/projgp.html - 2011)
>>>>
>>>> 2016-08-04 23:32 GMT+02:00 Michaël Michaud <m.michael.mich...@orange.fr
>>>> >:
>>>>
>>>>> Hi Peppe,
>>>>>
>>>>> Your explanation is clear.
>>>>>
>>>>> I tend to be on the same opinion as Jukka on this topic because I
>>>>> generally use OpenJUMP as a toolbox, and I generally know exactly what
>>>>> I
>>>>> want to do with my data.
>>>>>
>>>>> But I admit that to visualize heterogeneous data, OpenJUMP has not much
>>>>> to offer to the user to solve projection problems, and the beginner can
>>>>> be bothered by the lack of assistance.
>>>>>
>>>>> Here are a few recommandation :
>>>>>
>>>>> 1 - Projection issues may be tricky. It is magic as long as the only
>>>>> need is visualization, but if the user need to reproject his dataset,
>>>>> he
>>>>> must be aware of the consequences (reversibility, topology
>>>>> consistency...). Last time I have been screwed by a projection problem
>>>>> is with FME. I imported shapefiles with a prj in a project using the
>>>>> "same" projection. It was supposed to be a no-op (doing nothing),
>>>>> except
>>>>> that FME did a transformation from projection A (defined by prj
>>>>> parameters) to projection A (defined by internal FME parameters), which
>>>>> resulted in an invisible switch of  a few micrometers difficult to see,
>>>>> but which broke the consistency with another layer (which did not
>>>>> follow
>>>>> the same process). Of course this can be avoided in FME, but this is
>>>>> just an example to illustrate that without a great care, something
>>>>> supposed to be magic may become dramatic.
>>>>>
>>>>> 2 - From my point of view, one of the most difficult problem is to be
>>>>> able to recognize that two coordinate reference system with different
>>>>> origins (different registries, different formats, different libraries,
>>>>> different definitions) represent the same thing (see the above problem
>>>>> with FME). I think you already worked on that problem.
>>>>>
>>>>> 3 - Your mail explains quite clearly what already exists and where you
>>>>> want to go. I think that to anticipate difficulties, we can suppose
>>>>> that
>>>>> a SRID is associated to the task and try to define OpenJUMP behaviour
>>>>> in
>>>>> different situations :
>>>>> - default behaviour when creating a new task : asking for a srid or not
>>>>> ? it is a good thing if OJ can infer information from prj files or
>>>>> other
>>>>> sources, but I don't like having to answer esoteric questions before I
>>>>> can start working.
>>>>> - task without srid : does it take the srid of the first layer imported
>>>>> ? What if layers without srid are already imported ?
>>>>> - can we change the srid of a task if layers with srid are already
>>>>> imported ?
>>>>> - importing a layer with a different srid : 1) the layer is just tagged
>>>>> (layer srid mismatch task srid), 2) the layer is automatically
>>>>> reprojected by the renderer ? 3) the user is invited to reproject the
>>>>> layer ? 4) There are some options to define OpenJUMP behaviour
>>>>> - how to deal with layers without projection : can we import them in a
>>>>> task with a srid ? can we edit them ? Do we set the task projection to
>>>>> the layer projection automatically ?
>>>>> - if a reprojected layer is not editable, an interesting option would
>>>>> be
>>>>> to set the task srid to the selected layer srid (-> makes the selected
>>>>> layer editable, and reproject other layers)
>>>>> - etc.
>>>>>
>>>>> 4- Implementation : no real opinion. Ede's advice will certainly make
>>>>> the code more flexible, but also a bit more complex. And how to
>>>>> represent the coordinate system property ? Another difficult question.
>>>>> We already have SRID represented by an int at the geometry level (JTS)
>>>>> and a CoordinateSystem at the FeatureSchema level. IMHO, the first is a
>>>>> bit too lightweight (cannot handle non EPSG crs). The second is too
>>>>> lightweight if we want to use it to effectively transform coordinates
>>>>> (cannot handle much transformations) and too heavyweight if we just use
>>>>> it as a reference to be used by CTS library (or any other).
>>>>>
>>>>>
>>>>> My 3 cents
>>>>>
>>>>> Michael
>>>>>
>>>>>
>>>>>
>>>>> Le 03/08/2016 à 15:13, Gmail a écrit :
>>>>> > LoopThis thread needs a larger explanation.
>>>>> > I try to simplify it.
>>>>> > other GIS like Kosmo or GVSig implemented Coordinate system framework
>>>>> > following these steps:
>>>>> > a) first step they add a projection object to the task (usually as
>>>>> EPSG or
>>>>> > ESRI code). In Kosmo user has to set that. QGIS also allows to set
>>>>> Task
>>>>> > projection loading that from the first loadedf file (with SRID).
>>>>> > b) QGIS define the Unit of the task from SRID ( ex. 4326>degree,
>>>>> > 32632>metre) while GvSig And Kosmo require to set it manually.
>>>>> > c) a projection object is set to each loaded layer. This is done
>>>>> reading
>>>>> > layer metadata or manually
>>>>> > d) if the task and the layer projection object are different a
>>>>> > transformation should be set. Those software use ( for vector) proj4
>>>>> > libraries. In this step Qgis and newer gvsig allows on fly
>>>>> reprojection.
>>>>> > e) this transformation is taken into account only by layer renderes
>>>>> on the
>>>>> > workbench. Which changes geometry before drawing it.
>>>>> > This transformation is saved into project file and taken into account
>>>>> > whenever the project file is loaded.
>>>>> > f) Note that Kosmo (and probably Gvsig) doesn't allow any spatial
>>>>> operation
>>>>> > on reprojected layers. The only way to modify them is to save them
>>>>> reprojected.
>>>>> >
>>>>> > Recently I did few modifications on shape file reading in order to
>>>>> expand
>>>>> > capability to set layer SRId  when reading file. Layer properties
>>>>> plugins
>>>>> > already have this capability for both raster and vector ( included
>>>>> > geotif*). Together with database and wfs capability to record layer
>>>>> srid we
>>>>> > probably get almost point C of my list.
>>>>> >
>>>>> > My idea is to work on point A and B, integrating parts if my measure
>>>>> plugin
>>>>> > in to OJ core in order to have measurements\zoom when task
>>>>> projection is
>>>>> > geographic or possibility that oj display meter or feet unit on
>>>>> > measurements \ scale bar.
>>>>> > The other points can be faced in the future, including in fly
>>>>> reprojection.
>>>>> >
>>>>> > My project:
>>>>> > 1) Oj already as a srid registry embedded that I added when I
>>>>> defined srid
>>>>> > detection capability from auxiliary files. It is a simple list of
>>>>> > projection, a series of lines with only srid number and a proj.
>>>>> description
>>>>> > ( ex <32632>;<WGS 84 UTM zone 32>), build using proj4 registries and
>>>>> excel.
>>>>> > I could expand each line with unit ( ex <32632>;<WGS 84 UTM zone
>>>>> 32>;<metre>)
>>>>> > 2) expand Task class with srid code and unit. User can define
>>>>> manually .
>>>>> > 3) modify measure /zoom plugins according units, meter, foot, degree
>>>>> ( in
>>>>> > this last case I would limit only to wgs84 ) using classes fro my
>>>>> measure
>>>>> > plugin.
>>>>> >
>>>>> > Peppe
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> >
>>>>> > *
>>>>> >
>>>>> >
>>>>> >
>>>>> > Inviato con AquaMail per Android
>>>>> > http://www.aqua-mail.com
>>>>> >
>>>>> >
>>>>> > Il 03 agosto 2016 12:32:48 edgar.sol...@web.de ha scritto:
>>>>> >
>>>>> >> hey Peppe,
>>>>> >>
>>>>> >> On 03.08.2016 11 <03.08.2016%2011>:11, Giuseppe Aruta wrote:
>>>>> >>> Hi all,
>>>>> >>> The title explains what is my idea. In a possible future we can
>>>>> extend OJ
>>>>> >>> projection capabilities.  And the 1st step I would explore is to
>>>>> add SRID
>>>>> >>> code to a task (to centralize possible transformations)
>>>>> >> can you elaborate?
>>>>> >>
>>>>> >>> and unit of measurements (retriving from SRID, which will affect
>>>>> other
>>>>> >>> plugins/tools like measure tools, measure area/length, display
>>>>> scales etc,
>>>>> >>> especially for Geographic coordinate systems).
>>>>> >> same here.
>>>>> >>
>>>>> >>> I gave a look at Task class , should I implement (srid and unit) as
>>>>> >>> properties into the associate xml file? Does it breaks
>>>>> compatibility?
>>>>> >> ..ede
>>>>> >>
>>>>> >> ------------------------------------------------------------
>>>>> ------------------
>>>>> >> _______________________________________________
>>>>> >> Jump-pilot-devel mailing list
>>>>> >> Jump-pilot-devel@lists.sourceforge.net
>>>>> >> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>>> >
>>>>> >
>>>>> > ------------------------------------------------------------
>>>>> ------------------
>>>>> > _______________________________________________
>>>>> > Jump-pilot-devel mailing list
>>>>> > Jump-pilot-devel@lists.sourceforge.net
>>>>> > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>>> >
>>>>>
>>>>>
>>>>> ------------------------------------------------------------
>>>>> ------------------
>>>>> _______________________________________________
>>>>> Jump-pilot-devel mailing list
>>>>> Jump-pilot-devel@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>> _______________________________________________
>>>> Jump-pilot-devel mailing 
>>>> listJump-pilot-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>>
>>>> ------------------------------------------------------------------------------
>>>> _______________________________________________ Jump-pilot-devel
>>>> mailing list Jump-pilot-devel@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Jump-pilot-devel mailing 
>>> listJump-pilot-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>>
>>> ------------------------------------------------------------------------------
>>> _______________________________________________ Jump-pilot-devel
>>> mailing list Jump-pilot-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>
>> ------------------------------------------------------------------------------
>
> _______________________________________________
> Jump-pilot-devel mailing 
> listJump-pilot-devel@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
> ------------------------------------------------------------
> ------------------
>
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to