add shapewrite function

This commit is contained in:
wyq 2025-04-09 20:11:15 +08:00
parent 71559f3e24
commit 1b1a5b6604
6 changed files with 47 additions and 20 deletions

View File

@ -69,7 +69,7 @@ import java.util.zip.ZipInputStream;
public static String getVersion() { public static String getVersion() {
String version = GlobalUtil.class.getPackage().getImplementationVersion(); String version = GlobalUtil.class.getPackage().getImplementationVersion();
if (version == null || version.equals("")) { if (version == null || version.equals("")) {
version = "4.0"; version = "4.0.1";
} }
return version; return version;
} }

View File

@ -1,32 +1,32 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MeteoInfo File="milconfig.xml" Type="configurefile"> <MeteoInfo File="milconfig.xml" Type="configurefile">
<Path OpenPath="D:\Working\MIScript\Jython\mis\array"> <Path OpenPath="D:\Working\MIScript\Jython\mis\io\grib">
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math\stats"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\dataconvert"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math\signal"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\test"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\netcdf"/> <RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\netcdf"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\dataframe"/> <RecentFolder Folder="D:\Working\MIScript\Jython\mis\dataframe"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\burf"/> <RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\burf"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\grib"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map\webmap"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math\linalg"/> <RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math\linalg"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math"/> <RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\array"/> <RecentFolder Folder="D:\Working\MIScript\Jython\mis\array"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map\webmap"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map\geoshow"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\contour"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\json"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\grib"/>
</Path> </Path>
<File> <File>
<OpenedFiles> <OpenedFiles>
<OpenedFile File="D:\Working\MIScript\Jython\mis\io\radar\radar_x_phase_2.py"/> <OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\contour\conoutm.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\map\webmap\new_tilefactory_tianditu-1.py"/> <OpenedFile File="D:\Working\MIScript\Jython\mis\io\grib\Z_NAFP_C_BCSH_9km_1.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\common_math\linalg\toeplitz_1.py"/> <OpenedFile File="D:\Working\MIScript\Jython\mis\io\grib\Z_NAFP_C_BCSH_9km_proj.py"/>
</OpenedFiles> </OpenedFiles>
<RecentFiles> <RecentFiles>
<RecentFile File="D:\Working\MIScript\Jython\mis\io\radar\radar_x_phase_2.py"/> <RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\contour\conoutm.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\map\webmap\new_tilefactory_tianditu-1.py"/> <RecentFile File="D:\Working\MIScript\Jython\mis\io\grib\Z_NAFP_C_BCSH_9km_1.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\common_math\linalg\toeplitz_1.py"/> <RecentFile File="D:\Working\MIScript\Jython\mis\io\grib\Z_NAFP_C_BCSH_9km_proj.py"/>
</RecentFiles> </RecentFiles>
</File> </File>
<Font> <Font>

View File

@ -27,6 +27,21 @@ class GeoGraphicCollection(object):
else: else:
return self._geographic.xshift(xshift) return self._geographic.xshift(xshift)
@classmethod
def factory(cls, graphics, projection=None):
"""
Create GeoGraphicCollection from GraphicCollection.
:param graphics: (*GraphicCollection*) The graphics.
:param projection: (*ProjectionInfo*) The projection.
:return: (*GeoGraphicCollection*) Created GeoGraphicCollection object.
"""
gg = JGeoGraphicCollection.factory(graphics)
if projection is not None:
gg.setProjInfo(projection)
return GeoGraphicCollection(geographic=gg)
@property @property
def shapes(self): def shapes(self):
return self._geographic.getShapes() return self._geographic.getShapes()

View File

@ -14,7 +14,7 @@ from org.meteoinfo.geometry.graphic import Graphic
from org.meteoinfo.geometry.legend import BreakTypes from org.meteoinfo.geometry.legend import BreakTypes
from org.meteoinfo.geometry.geoprocess import GeoComputation, GeometryUtil from org.meteoinfo.geometry.geoprocess import GeoComputation, GeometryUtil
from org.meteoinfo.ndarray.math import ArrayMath, ArrayUtil from org.meteoinfo.ndarray.math import ArrayMath, ArrayUtil
from org.meteoinfo.geo.mapdata import MapDataManage from org.meteoinfo.geo.mapdata import MapDataManage, ShapeFileManage
from org.meteoinfo.geo.util import GeoIOUtil from org.meteoinfo.geo.util import GeoIOUtil
from org.meteoinfo.geo.io import GeoJSONWriter from org.meteoinfo.geo.io import GeoJSONWriter
from org.meteoinfo.table import AttributeTable from org.meteoinfo.table import AttributeTable
@ -35,7 +35,7 @@ from java.util import ArrayList
__all__ = [ __all__ = [
'arrayinpolygon', 'bilwrite', 'circle', 'convert_encoding_dbf', 'distance', 'geojson_write', 'georead', 'geotiffread', 'gridarea', 'arrayinpolygon', 'bilwrite', 'circle', 'convert_encoding_dbf', 'distance', 'geojson_write', 'georead', 'geotiffread', 'gridarea',
'maplayer', 'inpolygon', 'maskin', 'maskout', 'polyarea', 'polygon', 'rmaskin', 'rmaskout', 'shaperead', 'maplayer', 'inpolygon', 'maskin', 'maskout', 'polyarea', 'polygon', 'rmaskin', 'rmaskout', 'shaperead',
'polygonindex', 'projinfo', 'project', 'projectxy', 'reproject', 'reproject_image' 'shapewrite', 'polygonindex', 'projinfo', 'project', 'projectxy', 'reproject', 'reproject_image'
] ]
@ -72,6 +72,18 @@ def shaperead(fn, encoding=None):
raise raise
def shapewrite(fn, graphics, projection=None):
"""
Save graphics as a shape file.
:param fn: (*str*) The shape file name
:param graphics: (*GraphicCollection*) The graphics
:param projection: (*ProjectionInfo*) The projection
"""
geographic = GeoGraphicCollection.factory(graphics, projection=projection)
ShapeFileManage.saveShapeFile(fn, geographic._geographic)
def georead(fn, encoding=None): def georead(fn, encoding=None):
""" """
Returns a layer read from a supported geo-data file. Returns a layer read from a supported geo-data file.

View File

@ -35,7 +35,7 @@
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<revision>4.0</revision> <revision>4.0.1</revision>
<maven.compiler.source>8</maven.compiler.source> <maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target> <maven.compiler.target>8</maven.compiler.target>
<maven.compiler.release>8</maven.compiler.release> <maven.compiler.release>8</maven.compiler.release>