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() {
String version = GlobalUtil.class.getPackage().getImplementationVersion();
if (version == null || version.equals("")) {
version = "4.0";
version = "4.0.1";
}
return version;
}

View File

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

View File

@ -27,6 +27,21 @@ class GeoGraphicCollection(object):
else:
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
def shapes(self):
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.geoprocess import GeoComputation, GeometryUtil
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.io import GeoJSONWriter
from org.meteoinfo.table import AttributeTable
@ -35,7 +35,7 @@ from java.util import ArrayList
__all__ = [
'arrayinpolygon', 'bilwrite', 'circle', 'convert_encoding_dbf', 'distance', 'geojson_write', 'georead', 'geotiffread', 'gridarea',
'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
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):
"""
Returns a layer read from a supported geo-data file.

View File

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