Revision: 5509 http://sourceforge.net/p/jump-pilot/code/5509 Author: michaudm Date: 2017-10-07 09:14:29 +0000 (Sat, 07 Oct 2017) Log Message: ----------- Integration of Coordinate Transformation PlugIn in OpenJUMP core
Modified Paths: -------------- core/trunk/ChangeLog core/trunk/pom.xml core/trunk/scripts/default-plugins.xml core/trunk/src/language/jump.properties core/trunk/src/language/jump_cz.properties core/trunk/src/language/jump_de.properties core/trunk/src/language/jump_es.properties core/trunk/src/language/jump_fi.properties core/trunk/src/language/jump_fr.properties core/trunk/src/language/jump_hu.properties core/trunk/src/language/jump_it.properties core/trunk/src/language/jump_ja_JP.properties core/trunk/src/language/jump_ml.properties core/trunk/src/language/jump_pt.properties core/trunk/src/language/jump_pt_BR.properties core/trunk/src/language/jump_ta_IN.properties core/trunk/src/language/jump_te.properties core/trunk/src/language/jump_zh_CN.properties core/trunk/src/language/jump_zh_HK.properties Added Paths: ----------- core/trunk/src/org/openjump/core/ui/plugin/cts/CTSPlugIn.java core/trunk/src/org/openjump/core/ui/plugin/cts/CoordinateSystemWrapper.java core/trunk/src/org/openjump/core/ui/plugin/cts/RegistryReader.java Modified: core/trunk/ChangeLog =================================================================== --- core/trunk/ChangeLog 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/ChangeLog 2017-10-07 09:14:29 UTC (rev 5509) @@ -3,6 +3,9 @@ # 2. make sure that lines break at 80 chars for constricted display situations #<-------------------------------- 80 chars ----------------------------------># +2017-10-07 mmichaud <m.michael.mich...@orange.fr> + * Integration of Coordinate Transformation PlugIn in OpenJUMP core + 2017-10-06 mmichaud <m.michael.mich...@orange.fr> * Add postgis driver options to narrow database geometry type Modified: core/trunk/pom.xml =================================================================== --- core/trunk/pom.xml 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/pom.xml 2017-10-07 09:14:29 UTC (rev 5509) @@ -881,6 +881,11 @@ <version>2.0b4</version> <scope>compile</scope> </dependency> + <dependency> + <groupId>org.orbisgis</groupId> + <artifactId>cts</artifactId> + <version>1.5.1</version> + </dependency> <!--dependency> <groupId>jdom</groupId> <artifactId>jdom</artifactId> Modified: core/trunk/scripts/default-plugins.xml =================================================================== --- core/trunk/scripts/default-plugins.xml 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/scripts/default-plugins.xml 2017-10-07 09:14:29 UTC (rev 5509) @@ -907,6 +907,14 @@ <plug-in> org.openjump.core.ui.plugin.raster.RasterQueryPlugIn </plug-in> + <!--- ======================= PLUGINS menu ============================== --> + <plug-in> + org.openjump.core.ui.plugin.cts.CTSPlugIn + <menus> + <main-menu menupath="MenuNames.PLUGINS" install="true" /> + </menus> + </plug-in> + <!--- ======================= WINDOW menu =============================== --> <plug-in> com.vividsolutions.jump.workbench.ui.plugin.OutputWindowPlugIn Modified: core/trunk/src/language/jump.properties =================================================================== --- core/trunk/src/language/jump.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -527,6 +527,25 @@ org.openjump.core.rasterimage.SelectRasterImageFilesPanel.Select-Raster-Image = Select Raster Image org.openjump.core.rasterimage.SelectRasterImageFilesPanel.supported-raster-image-formats = Supported raster image formats org.openjump.core.ui.io.file.DataSourceFileLayerLoader.charset = Charset +org.openjump.core.ui.plugin.cts.CTSPlugIn = Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry = Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS = Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS = Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found = No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources = Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform = Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace = Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum = Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum = Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid = Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid = Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers = Transformed layers +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84 = Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84 = Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs = Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs = Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection = Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection = Source Projection org.openjump.core.ui.plugin.customize.BeanToolsPlugIn.Bean-Tools = BeanShell Tools org.openjump.core.ui.plugin.customize.PythonToolsPlugIn.Python-Console-and-Tools = Python Console and Tools org.openjump.core.ui.plugin.datastore.AddDataStoreLayerWizard = Data Store Layer Modified: core/trunk/src/language/jump_cz.properties =================================================================== --- core/trunk/src/language/jump_cz.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_cz.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2809,4 +2809,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_de.properties =================================================================== --- core/trunk/src/language/jump_de.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_de.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2805,4 +2805,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_es.properties =================================================================== --- core/trunk/src/language/jump_es.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_es.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2786,4 +2786,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_fi.properties =================================================================== --- core/trunk/src/language/jump_fi.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_fi.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2782,4 +2782,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=Muokkaa projektin metatietoja org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=Muokkaa metatietoja. Varoitus: SRS:n muuttaminen ei uudelleenprojisoi tasoja.\n Metatiedot tallennetaan pysyv\u00E4sti kun projektitiedosto tallennetaan org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_fr.properties =================================================================== --- core/trunk/src/language/jump_fr.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_fr.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -488,6 +488,25 @@ org.openjump.core.rasterimage.SelectRasterImageFilesPanel.Select-Raster-Image = S\u00e9lectionner l'image raster org.openjump.core.rasterimage.SelectRasterImageFilesPanel.supported-raster-image-formats = Formats d'images reconnus org.openjump.core.ui.io.file.DataSourceFileLayerLoader.charset = Jeu de caract\u00e8res +org.openjump.core.ui.plugin.cts.CTSPlugIn = Transformation de coordonn\xE9es +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry = Registre +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS = Syst\xE8me de coordonn\xE9es source +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS = Syst\xE8me de coordonn\xE9es cible +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found = Aucune transformation n'a \xE9t\xE9 trouv\xE9e +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources = Les couches sources ont des Syst\xE8me de coordonn\xE9es h\xE9t\xE9rog\xE8nes +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform = Transformation de la couche +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace = Remplacement des g\xE9om\xE9tries dans +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum = R\xE9f\xE9rentiel source +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum = R\xE9f\xE9rentiel cible +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid = Ellipso\xEFde source +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid = Ellipso\xEFde cible +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers = Couches transform\xE9es +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84 = Transformation vers WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84 = Transformation vers WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs = Le syst\xE8me de coordonn\xE9es source \xE9tait invalide +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs = Le syst\xE8me de coordonn\xE9es cible \xE9tait invalide +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection = Projection source +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection = Projection cible org.openjump.core.ui.plugin.customize.BeanToolsPlugIn.Bean-Tools = BeanShell Tools org.openjump.core.ui.plugin.customize.PythonToolsPlugIn.Python-Console-and-Tools = Outils et console Python org.openjump.core.ui.plugin.datastore.AddDataStoreLayerWizard = Base de donn\u00e9es Modified: core/trunk/src/language/jump_hu.properties =================================================================== --- core/trunk/src/language/jump_hu.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_hu.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2801,4 +2801,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_it.properties =================================================================== --- core/trunk/src/language/jump_it.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_it.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2788,4 +2788,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=Edita metadati del progetto org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_ja_JP.properties =================================================================== --- core/trunk/src/language/jump_ja_JP.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_ja_JP.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2803,4 +2803,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_ml.properties =================================================================== --- core/trunk/src/language/jump_ml.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_ml.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -4076,4 +4076,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_pt.properties =================================================================== --- core/trunk/src/language/jump_pt.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_pt.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2802,4 +2802,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_pt_BR.properties =================================================================== --- core/trunk/src/language/jump_pt_BR.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_pt_BR.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2802,4 +2802,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_ta_IN.properties =================================================================== --- core/trunk/src/language/jump_ta_IN.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_ta_IN.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2801,4 +2801,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_te.properties =================================================================== --- core/trunk/src/language/jump_te.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_te.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -3308,4 +3308,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_zh_CN.properties =================================================================== --- core/trunk/src/language/jump_zh_CN.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_zh_CN.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2965,4 +2965,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Modified: core/trunk/src/language/jump_zh_HK.properties =================================================================== --- core/trunk/src/language/jump_zh_HK.properties 2017-10-06 21:57:39 UTC (rev 5508) +++ core/trunk/src/language/jump_zh_HK.properties 2017-10-07 09:14:29 UTC (rev 5509) @@ -2966,4 +2966,23 @@ org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.edit-metadata=#T:Edit project metadata org.openjump.core.ui.plugin.file.ProjectInfoPlugIn.tooltip=#T:Edit SRS and Information metadata. Warning: changing SRS won't reproject layers.\n Metadata will be saved on saving project file org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.narrow-geometry-type=#T:Narrow geometry type if possible -org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type \ No newline at end of file +org.openjump.core.ui.plugin.datastore.DataStoreSaveDriverPanel.convert-to-multigeometry=#T:Convert to multi-geometry type +org.openjump.core.ui.plugin.cts.CTSPlugIn=#T:Coordinate Transformation +org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources=#T:Source layers have heterogeneous coordinate systems +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs=#T:Source Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs=#T:Target Coordinate System was not Valid +org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found=#T:No coordinate operation has been found +org.openjump.core.ui.plugin.cts.CTSPlugIn.registry=#T:Registry +org.openjump.core.ui.plugin.cts.CTSPlugIn.replace=#T:Replace geometries in +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS=#T:Source coordinate systeme +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum=#T:Source datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid=#T:Source spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS=#T:Target coordinate system +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum=#T:Target datum +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection=#T:Source Projection +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid=#T:Target spheroid +org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84=#T:Transformation to WGS84 +org.openjump.core.ui.plugin.cts.CTSPlugIn.transform=#T:Transform layer +org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers=#T:Transformed layers \ No newline at end of file Added: core/trunk/src/org/openjump/core/ui/plugin/cts/CTSPlugIn.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/cts/CTSPlugIn.java (rev 0) +++ core/trunk/src/org/openjump/core/ui/plugin/cts/CTSPlugIn.java 2017-10-07 09:14:29 UTC (rev 5509) @@ -0,0 +1,386 @@ +package org.openjump.core.ui.plugin.cts; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateFilter; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jump.I18N; +import com.vividsolutions.jump.coordsys.CoordinateSystem; +import com.vividsolutions.jump.feature.Feature; +import com.vividsolutions.jump.task.TaskMonitor; +import com.vividsolutions.jump.workbench.WorkbenchContext; +import com.vividsolutions.jump.workbench.model.Layer; +import com.vividsolutions.jump.workbench.model.Layerable; +import com.vividsolutions.jump.workbench.model.UndoableCommand; +import com.vividsolutions.jump.workbench.plugin.*; +import com.vividsolutions.jump.workbench.ui.GUIUtil; +import com.vividsolutions.jump.workbench.ui.HTMLFrame; +import com.vividsolutions.jump.workbench.ui.MenuNames; +import com.vividsolutions.jump.workbench.ui.MultiInputDialog; +import com.vividsolutions.jump.workbench.ui.SuggestTreeComboBox; +import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller; +import org.cts.CRSFactory; +import org.cts.Identifier; +import org.cts.crs.CRSException; +import org.cts.crs.CoordinateReferenceSystem; +import org.cts.crs.GeodeticCRS; +import org.cts.datum.GeodeticDatum; +import org.cts.op.*; +import org.cts.registry.*; +import org.openjump.core.ccordsys.srid.SRIDStyle; + +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.geom.NoninvertibleTransformException; +import java.io.IOException; +import java.util.*; +import java.util.List; + +/** + * PlugIn to transform coordinates using Coordinate Transformation Suite (CTS) + */ +public class CTSPlugIn extends ThreadedBasePlugIn implements Iconified, EnableChecked { + + private final String REGISTRY = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.registry"); + private final String SOURCE_LABEL = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.srcCRS"); + private final String TARGET_LABEL = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtCRS"); + private final String OP_NOT_FOUND = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.op-not-found"); + private final String HETEROGEN_SRC = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.heterogeneous-sources"); + private final String TRANSFORM = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.transform"); + private final String REPLACE = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.replace"); + private final String SOURCE_DATUM = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.srcDatum"); + private final String TARGET_DATUM = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtDatum"); + private final String SOURCE_SPHEROID = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.srcSpheroid"); + private final String TARGET_SPHEROID = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtSpheroid"); + private final String SOURCE_TOWGS84 = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.srcToWgs84"); + private final String TARGET_TOWGS84 = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtToWgs84"); + private final String TRANSFORMED_LAYERS = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.transformed-layers"); + private final String INVALID_SRC_CRS = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-src-crs"); + private final String INVALID_TGT_CRS = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.invalid-tgt-crs"); + private final String SOURCE_PROJECTION = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.srcProjection"); + private final String TARGET_PROJECTION = I18N.get("org.openjump.core.ui.plugin.cts.CTSPlugIn.tgtProjection"); + + private static final String EPSG = "EPSG"; + private static final String IGNF = "IGNF"; + + private String registry = EPSG; + private String srcCode = "4326"; + private String tgtCode = "4326"; + private final Map<String,String> codes = new LinkedHashMap<>(64); + + public ImageIcon getIcon(){ + return new ImageIcon(this.getClass().getResource("world.png")); + } + + public boolean execute(final PlugInContext context) throws Exception { + + final String SOURCE = "source"; + final String TARGET = "target"; + MultiInputDialog dialog = new MultiInputDialog(context.getWorkbenchFrame(), getName(), true); + + // Try to get the srid (epsg) of selected layers + // 1) from the CoordinateSystem associated to the first selected layer + // 2) from the SRIDStyle associated to the first selected layer + CoordinateSystem coordSystem; + if (context.getSelectedLayers().length > 0 && + null != (coordSystem = context.getSelectedLayer(0).getFeatureCollectionWrapper().getFeatureSchema().getCoordinateSystem())) { + srcCode = coordSystem == CoordinateSystem.UNSPECIFIED ? + "0" : Integer.toString(coordSystem.getEPSGCode()); + if (srcCode.equals("0") && context.getSelectedLayer(0).getStyle(SRIDStyle.class) != null) { + srcCode = Integer.toString(((SRIDStyle)context.getSelectedLayer(0).getStyle(SRIDStyle.class)).getSRID()); + } + } + + final JComboBox<String> registry_cb = + dialog.addComboBox(REGISTRY, registry, Arrays.asList("EPSG", "IGNF"),""); + + codes.clear(); + codes.putAll(getAvailableCRS(context, (String)registry_cb.getSelectedItem())); + + final SuggestTreeComboBox srcCodesCB = new SuggestTreeComboBox(codes.keySet().toArray(new String[codes.size()]), 8); + srcCodesCB.setSelectedItem(srcCode); + srcCodesCB.setPrototypeDisplayValue("abcdefghijklmnpqrstuvwxyz/0123456789"); + dialog.addRow(SOURCE, new JLabel(SOURCE_LABEL), srcCodesCB, new EnableCheck[0], ""); + + final SuggestTreeComboBox tgtCodesCB = new SuggestTreeComboBox(codes.keySet().toArray(new String[codes.size()]), 8); + tgtCodesCB.setSelectedItem(tgtCode); + tgtCodesCB.setPrototypeDisplayValue("abcdefghijklmnpqrstuvwxyz/0123456789"); + dialog.addRow(TARGET, new JLabel(TARGET_LABEL), tgtCodesCB, new EnableCheck[0], ""); + + registry_cb.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + try { + codes.clear(); + codes.putAll(getAvailableCRS(context, (String) registry_cb.getSelectedItem())); + srcCodesCB.changeModel(codes.keySet().toArray(new String[codes.size()])); + tgtCodesCB.changeModel(codes.keySet().toArray(new String[codes.size()])); + srcCodesCB.setSelectedItem(codes.keySet().iterator().next()); + tgtCodesCB.setSelectedItem(codes.keySet().iterator().next()); + } catch(RegistryException|CRSException|IOException t) { + t.printStackTrace(); + } + } + }); + + GUIUtil.centreOnWindow(dialog); + dialog.setVisible(true); + if (dialog.wasOKPressed()) { + registry = dialog.getText(REGISTRY); + srcCode = codes.get(srcCodesCB.getSelectedItem()); + tgtCode = codes.get(tgtCodesCB.getSelectedItem()); + return true; + } + return false; + } + + public void run(TaskMonitor monitor, PlugInContext context) + throws RegistryException, CRSException { + reportNothingToUndoYet(context); + if (srcCode == null) { + throw new RegistryException(INVALID_SRC_CRS); + } else if (tgtCode == null) { + throw new RegistryException(INVALID_TGT_CRS); + } + if (!tgtCode.equals(srcCode)) { + CRSFactory crsFactory = new CRSFactory(); + RegistryManager registryManager = crsFactory.getRegistryManager(); + if (registry.equals("EPSG")) { + registryManager.addRegistry(new EPSGRegistry()); + } else if (registry.equals("IGNF")) { + registryManager.addRegistry(new IGNFRegistry()); + } + //CoordinateReferenceSystem srcCRS = registryManager.getRegistry(registry) + // .getCoordinateReferenceSystem(new Identifier(registry, srcCode, null)); + //CoordinateReferenceSystem tgtCRS = registryManager.getRegistry(registry) + // .getCoordinateReferenceSystem(new Identifier(registry, tgtCode, null)); +// + //commitChanges(monitor, context, srcCRS, tgtCRS); + //report(context, srcCRS, tgtCRS); + } + } + + + // Commit reprojection as an undoable transaction + private void commitChanges(final TaskMonitor monitor, + final PlugInContext context, + final CoordinateReferenceSystem srcCRS, + final CoordinateReferenceSystem tgtCRS) throws CoordinateOperationException { + + // Short-circuits for cases where transformation cannot be done + CoordinateOperation coordinateOperation = getOperation(srcCRS, tgtCRS); + if (coordinateOperation == null) { + context.getWorkbenchFrame().warnUser(OP_NOT_FOUND); + return; + } + Layer[] layers = context.getLayerNamePanel().getSelectedLayers(); + if (layers.length == 0) { + // Should never reach here if the plugin has been called from UI + return; + } + + // Prepare parameters and data structures for transaction + final CoordinateFilter filter = getCoordinateFilter(coordinateOperation); + boolean epsg = tgtCRS.getAuthorityName().equalsIgnoreCase(EPSG); + int epsgCode = epsg ? Integer.parseInt(tgtCRS.getAuthorityKey()) : 0; + CoordinateSystemWrapper newCoordinateSystem = new CoordinateSystemWrapper(tgtCRS); + final Map<String,ArrayList<Geometry>> srcGeometryMap = new HashMap<>(); + final Map<String,ArrayList<Geometry>> tgtGeometryMap = new HashMap<>(); + final Map<String,CoordinateSystem> oldCoordinateSystems = new HashMap<>(); + final Map<String,SRIDStyle> oldSridStyles = new HashMap<>(); + final Map<String,CoordinateSystem> newCoordinateSystems = new HashMap<>(); + + // Start transaction + context.getLayerManager().getUndoableEditReceiver().reportNothingToUndoYet(); + for (Layer layer : context.getSelectedLayers()) { + oldCoordinateSystems.put(layer.getName(), layer.getFeatureCollectionWrapper().getFeatureSchema().getCoordinateSystem()); + ArrayList<Geometry> srcGeometries = new ArrayList<>(); + ArrayList<Geometry> tgtGeometries = new ArrayList<>(); + int count = 0; + monitor.report(TRANSFORM + " " + layer.getName()); + for (Object object : layer.getFeatureCollectionWrapper().getFeatures()) { + Geometry srcGeom = ((Feature)object).getGeometry(); + srcGeometries.add(srcGeom); + Geometry tgtGeom = (Geometry)srcGeom.clone(); + tgtGeom.apply(filter); + tgtGeom.setSRID(epsgCode); + tgtGeom.geometryChanged(); + tgtGeometries.add(tgtGeom); + if (++count % 100 == 0) monitor.report(count, layer.getFeatureCollectionWrapper().getFeatures().size(), ""); + } + srcGeometryMap.put(layer.getName(), srcGeometries); + tgtGeometryMap.put(layer.getName(), tgtGeometries); + oldSridStyles.put(layer.getName(), (SRIDStyle)layer.getStyle(SRIDStyle.class)); + oldCoordinateSystems.put(layer.getName(), layer.getFeatureCollectionWrapper().getFeatureSchema().getCoordinateSystem()); + newCoordinateSystems.put(layer.getName(), newCoordinateSystem); + } + UndoableCommand cmd = new UndoableCommand(getName()) { + public void execute() { + boolean isFiringEvents = context.getLayerManager().isFiringEvents(); + context.getLayerManager().setFiringEvents(false); + for (Layer layer : context.getSelectedLayers()) { + monitor.report(REPLACE + " " + layer.getName()); + List<Feature> features = layer.getFeatureCollectionWrapper().getFeatures(); + ArrayList<Geometry> geometries = tgtGeometryMap.get(layer.getName()); + CoordinateSystem cs = newCoordinateSystems.get(layer.getName()); + for (int i = 0 ; i < features.size() ; i++) { + Feature feature = features.get(i); + feature.setGeometry(geometries.get(i)); + } + Layer.tryToInvalidateEnvelope(layer); + layer.removeStyle(layer.getStyle(SRIDStyle.class)); + SRIDStyle sridStyle = new SRIDStyle(); + sridStyle.setSRID(cs.getEPSGCode()); + layer.addStyle(sridStyle); + layer.getFeatureCollectionWrapper().getFeatureSchema().setCoordinateSystem(cs); + layer.setFeatureCollectionModified(true); + } + context.getLayerManager().setFiringEvents(isFiringEvents); + try { + context.getLayerViewPanel().getViewport().zoomToFullExtent(); + } catch(NoninvertibleTransformException e) { + e.printStackTrace(); + } + } + + public void unexecute() { + boolean isFiringEvents = context.getLayerManager().isFiringEvents(); + context.getLayerManager().setFiringEvents(false); + for (Layer layer : context.getSelectedLayers()) { + List<Feature> features = layer.getFeatureCollectionWrapper().getFeatures(); + ArrayList<Geometry> geometries = srcGeometryMap.get(layer.getName()); + CoordinateSystem cs = oldCoordinateSystems.get(layer.getName()); + for (int i = 0 ; i < features.size() ; i++) { + Feature feature = features.get(i); + feature.setGeometry(geometries.get(i)); + } + Layer.tryToInvalidateEnvelope(layer); + layer.removeStyle(layer.getStyle(SRIDStyle.class)); + if (oldSridStyles.get(layer.getName()) != null) layer.addStyle(oldSridStyles.get(layer.getName())); + layer.getFeatureCollectionWrapper().getFeatureSchema().setCoordinateSystem(cs); + layer.setFeatureCollectionModified(true); + } + context.getLayerManager().setFiringEvents(isFiringEvents); + try { + context.getLayerViewPanel().getViewport().zoomToFullExtent(); + } catch(NoninvertibleTransformException e) { + e.printStackTrace(); + } + } + }; + boolean exceptionOccurred = true; + try { + cmd.execute(); + exceptionOccurred = false; + } + finally { + if (exceptionOccurred) { + context.getLayerManager().getUndoableEditReceiver() + .getUndoManager().discardAllEdits(); + } + } + context.getLayerManager().getUndoableEditReceiver().receive(cmd.toUndoableEdit()); + } + + private void report(PlugInContext context, CoordinateReferenceSystem srcCRS, CoordinateReferenceSystem tgtCRS) + throws CoordinateOperationException { + HTMLFrame html = context.getOutputFrame(); + html.createNewDocument(); + html.setTitle(getName()); + html.append("<h2>" + TRANSFORMED_LAYERS + "</h2>"); + html.append(Arrays.toString(context.getSelectedLayers())); + html.append("<h2>" + SOURCE_LABEL + "</h2>"); + html.addField(SOURCE_LABEL, srcCRS.toString()); + html.addField(SOURCE_DATUM, srcCRS.getDatum().toString()); + html.addField(SOURCE_TOWGS84, srcCRS.getDatum().getToWGS84().toString()); + html.addField(SOURCE_SPHEROID, (srcCRS.getDatum()).getEllipsoid().toString()); + html.addField(SOURCE_PROJECTION, srcCRS.getProjection() == null ? "null" : + srcCRS.getProjection().toWKT(srcCRS.getCoordinateSystem().getUnit(0))); + html.append("<h2>" + TARGET_LABEL + "</h2>"); + html.addField(TARGET_LABEL, tgtCRS.toString()); + html.addField(TARGET_DATUM, tgtCRS.getDatum().toString()); + html.addField(TARGET_TOWGS84, tgtCRS.getDatum().getToWGS84().toString()); + html.addField(TARGET_SPHEROID, (srcCRS.getDatum()).getEllipsoid().toString()); + html.addField(TARGET_PROJECTION, tgtCRS.getProjection() == null ? "null" : + tgtCRS.getProjection().toWKT(tgtCRS.getCoordinateSystem().getUnit(0))); + html.append("<h2>" + getName() + "</h2>"); + CoordinateOperation op = getOperation(srcCRS, tgtCRS); + if (op != null) { + html.addField("", op.toString().replaceAll("\n","<br>")); + } + } + + private CoordinateOperation getOperation(final CoordinateReferenceSystem srcCRS, + final CoordinateReferenceSystem tgtCRS) + throws CoordinateOperationException { + Collection<CoordinateOperation> ops = CoordinateOperationFactory + .createCoordinateOperations((GeodeticCRS) srcCRS, (GeodeticCRS) tgtCRS); + return ops.size() == 0 ? null : + CoordinateOperationFactory.getMostPrecise(ops); + } + + private CoordinateFilter getCoordinateFilter(final CoordinateOperation op) { + return new CoordinateFilter() { + @Override + public void filter(Coordinate coordinate) { + try { + double[] xyz = op.transform(new double[]{coordinate.x, coordinate.y, coordinate.z}); + coordinate.setOrdinate(0, xyz[0]); + coordinate.setOrdinate(1, xyz[1]); + if (xyz.length > 2) coordinate.setOrdinate(2, xyz[2]); + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + } + + private Map<String,String> getAvailableCRS(PlugInContext context, String registry) + throws IOException, RegistryException, CRSException { + return RegistryReader.read(registry); + } + + EnableCheck createEnableCheck(final WorkbenchContext context) { + return new MultiEnableCheck() + .add(EnableCheckFactory.getInstance().createTaskWindowMustBeActiveCheck()) + .add(EnableCheckFactory.getInstance().createAtLeastNLayersMustBeSelectedCheck(1)) + .add(EnableCheckFactory.getInstance().createSelectedLayersMustBeEditableCheck()) + .add(EnableCheckFactory.getInstance().createSelectedLayerablesMustBeVectorLayers()) + .add(new EnableCheck() { + @Override + public String check(JComponent component) { + Layerable[] layerables = (Layerable[]) context.getLayerNamePanel() + .selectedNodes(Layerable.class).toArray(new Layerable[0]); + if (layerables.length > 0) { + Layer layer = (Layer) layerables[0]; + CoordinateSystem cs = layer.getFeatureCollectionWrapper().getFeatureSchema().getCoordinateSystem(); + SRIDStyle srid = (SRIDStyle) layer.getStyle(SRIDStyle.class); + for (int i = 1; i < layerables.length; i++) { + layer = (Layer) layerables[i]; + CoordinateSystem csi = layer.getFeatureCollectionWrapper().getFeatureSchema().getCoordinateSystem(); + SRIDStyle sridi = (SRIDStyle) layer.getStyle(SRIDStyle.class); + if (cs == csi && srid == sridi) continue; + if (cs == null && csi != null) return HETEROGEN_SRC; + if (cs != null && csi == null) return HETEROGEN_SRC; + if (cs == CoordinateSystem.UNSPECIFIED && csi != CoordinateSystem.UNSPECIFIED) + return HETEROGEN_SRC; + if (cs != CoordinateSystem.UNSPECIFIED && csi == CoordinateSystem.UNSPECIFIED) + return HETEROGEN_SRC; + //try { + if (cs != null && cs.getEPSGCode() != csi.getEPSGCode()) + return HETEROGEN_SRC; + //} catch (UnsupportedOperationException e) { + //} + if (srid != null && sridi != null && srid.getSRID() != sridi.getSRID()) + return HETEROGEN_SRC; + } + return null; + } + // should never reach here + return "At least 1 layer must be selected"; + } + }); + } + +} + Added: core/trunk/src/org/openjump/core/ui/plugin/cts/CoordinateSystemWrapper.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/cts/CoordinateSystemWrapper.java (rev 0) +++ core/trunk/src/org/openjump/core/ui/plugin/cts/CoordinateSystemWrapper.java 2017-10-07 09:14:29 UTC (rev 5509) @@ -0,0 +1,101 @@ +package org.openjump.core.ui.plugin.cts; + + +import com.vividsolutions.jts.util.Assert; +import com.vividsolutions.jump.coordsys.CoordinateSystem; +import com.vividsolutions.jump.coordsys.Geographic; +import com.vividsolutions.jump.coordsys.Planar; +import com.vividsolutions.jump.coordsys.Projection; +import org.cts.IllegalCoordinateException; +import org.cts.crs.CoordinateReferenceSystem; +import org.cts.cs.Axis; +import org.cts.op.CoordinateOperationException; +import org.cts.op.CoordinateSwitch; +import org.cts.op.UnitConversion; +import org.cts.units.Unit; + +/** + * A wrapper to wrap a {@link org.cts.crs.CoordinateReferenceSystem} into a + * {@link com.vividsolutions.jump.coordsys.CoordinateSystem}. + */ +public class CoordinateSystemWrapper extends CoordinateSystem { + private CoordinateReferenceSystem crs; + CoordinateSystemWrapper(final CoordinateReferenceSystem crs) { + super(crs.getName(), + (crs.getAuthorityKey().toUpperCase().equals("EPSG") ? + Integer.parseInt(crs.getAuthorityKey()) : 0), + new Projection() { + + @Override + public Planar asPlanar(Geographic q0, Planar p) { + double[] dd = new double[]{q0.lat, q0.lon, q0.hgt}; + try { + // La latitude et la longitude sont \xE9chang\xE9es si besoin + if (crs.getCoordinateSystem().getAxis(0) == Axis.LONGITUDE) { + dd = CoordinateSwitch.SWITCH_LAT_LON.transform(dd); + } + // Les coordonn\xE9es g\xE9ographiques sont pass\xE9es en radian + dd = UnitConversion.createUnitConverter(Unit.DEGREE, Unit.RADIAN).transform(dd); + // puis projet\xE9es + dd = crs.getProjection().transform(dd); + return new Planar(dd[0], dd[1]); + } catch(CoordinateOperationException|IllegalCoordinateException e) { + throw new RuntimeException(e); + } + } + + @Override + public Geographic asGeographic(Planar p, Geographic q) { + double[] dd = new double[]{p.x, p.y, p.z}; + try { + // Les coordonn\xE9es sont pass\xE9es en g\xE9ographiques + dd = crs.getProjection().inverse().transform(dd); + // La latitude et la longitude sont \xE9chang\xE9es au besoin + if (crs.getCoordinateSystem().getAxis(0) == Axis.LONGITUDE) { + dd = CoordinateSwitch.SWITCH_LAT_LON.transform(dd); + } + // Les unit\xE9s sont converties en degr\xE9s + dd = UnitConversion.createUnitConverter(Unit.RADIAN, Unit.DEGREE).transform(dd); + return new Geographic(dd[0], dd[1]); + } catch(CoordinateOperationException|IllegalCoordinateException e) { + throw new RuntimeException(e); + } + } + }); + this.crs = crs; + } + public String toString() { + return crs.getName(); + } + public String getName() { + return crs.getName(); + } + public Projection getProjection() { + return new Projection() { + @Override + public Planar asPlanar(Geographic q0, Planar p) { + return null; + } + + @Override + public Geographic asGeographic(Planar p, Geographic q) { + return null; + } + }; + } + + public int getEPSGCode() { + return crs.getAuthorityName().equals("EPSG") ? + Integer.parseInt(crs.getAuthorityKey()) : 0; + } + + public int compareTo(Object o) { + Assert.isTrue(o instanceof CoordinateSystem); + if (this == o) { return 0; } + if (this == UNSPECIFIED) { return -1; } + if (o == UNSPECIFIED) { return 1; } + return toString().compareTo(o.toString()); + } +} + + Added: core/trunk/src/org/openjump/core/ui/plugin/cts/RegistryReader.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/cts/RegistryReader.java (rev 0) +++ core/trunk/src/org/openjump/core/ui/plugin/cts/RegistryReader.java 2017-10-07 09:14:29 UTC (rev 5509) @@ -0,0 +1,40 @@ +package org.openjump.core.ui.plugin.cts; + +import java.io.*; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * This class parses quickly a register to associate CRS codes with names. + * Name of CRSs may be written in a comment just before the CRS definition + */ +public class RegistryReader { + + static Map<String,String> read(String registry) throws IOException { + Map<String,String> map = new LinkedHashMap<String,String>(); + InputStream is = null; + try { + is = org.cts.registry.Registry.class.getResourceAsStream(registry.toLowerCase()); + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + String line, name = null, code; + while (null != (line=br.readLine())) { + if (line.startsWith("#")) { + name = line.substring(1).trim(); + } else if (line.startsWith("<")) { + code = line.substring(1, line.indexOf(">")); + map.put(code, code); + if (name != null && name.length() > 0) { + map.put(name, code); + } + name = null; + } else { + name = null; + } + } + } finally { + if (is != null) try {is.close();} catch(IOException e){} + } + return map; + } +} + ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel