add minimap
This commit is contained in:
parent
466812a64f
commit
44a42901c6
51 changed files with 126 additions and 311 deletions
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
UTF-8
|
|
||||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
|
||||||
<qgis version="3.20.3-Odense">
|
|
||||||
<identifier></identifier>
|
|
||||||
<parentidentifier></parentidentifier>
|
|
||||||
<language></language>
|
|
||||||
<type>dataset</type>
|
|
||||||
<title></title>
|
|
||||||
<abstract></abstract>
|
|
||||||
<links/>
|
|
||||||
<fees></fees>
|
|
||||||
<encoding></encoding>
|
|
||||||
<crs>
|
|
||||||
<spatialrefsys>
|
|
||||||
<wkt>PROJCRS["ETRS89 / UTM zone 32N",BASEGEOGCRS["ETRS89",ENSEMBLE["European Terrestrial Reference System 1989 ensemble",MEMBER["European Terrestrial Reference Frame 1989"],MEMBER["European Terrestrial Reference Frame 1990"],MEMBER["European Terrestrial Reference Frame 1991"],MEMBER["European Terrestrial Reference Frame 1992"],MEMBER["European Terrestrial Reference Frame 1993"],MEMBER["European Terrestrial Reference Frame 1994"],MEMBER["European Terrestrial Reference Frame 1996"],MEMBER["European Terrestrial Reference Frame 1997"],MEMBER["European Terrestrial Reference Frame 2000"],MEMBER["European Terrestrial Reference Frame 2005"],MEMBER["European Terrestrial Reference Frame 2014"],ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[0.1]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4258]],CONVERSION["UTM zone 32N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",9,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["Europe between 6°E and 12°E: Austria; Belgium; Denmark - onshore and offshore; Germany - onshore and offshore; Norway including - onshore and offshore; Spain - offshore."],BBOX[38.76,6,84.33,12]],ID["EPSG",25832]]</wkt>
|
|
||||||
<proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4>
|
|
||||||
<srsid>2105</srsid>
|
|
||||||
<srid>25832</srid>
|
|
||||||
<authid>EPSG:25832</authid>
|
|
||||||
<description>ETRS89 / UTM zone 32N</description>
|
|
||||||
<projectionacronym>utm</projectionacronym>
|
|
||||||
<ellipsoidacronym>EPSG:7019</ellipsoidacronym>
|
|
||||||
<geographicflag>false</geographicflag>
|
|
||||||
</spatialrefsys>
|
|
||||||
</crs>
|
|
||||||
<extent/>
|
|
||||||
</qgis>
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
UTF-8
|
|
||||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
|
||||||
<qgis version="3.20.3-Odense">
|
|
||||||
<identifier></identifier>
|
|
||||||
<parentidentifier></parentidentifier>
|
|
||||||
<language></language>
|
|
||||||
<type>dataset</type>
|
|
||||||
<title></title>
|
|
||||||
<abstract></abstract>
|
|
||||||
<links/>
|
|
||||||
<fees></fees>
|
|
||||||
<encoding></encoding>
|
|
||||||
<crs>
|
|
||||||
<spatialrefsys>
|
|
||||||
<wkt>PROJCRS["ETRS89 / UTM zone 32N",BASEGEOGCRS["ETRS89",ENSEMBLE["European Terrestrial Reference System 1989 ensemble",MEMBER["European Terrestrial Reference Frame 1989"],MEMBER["European Terrestrial Reference Frame 1990"],MEMBER["European Terrestrial Reference Frame 1991"],MEMBER["European Terrestrial Reference Frame 1992"],MEMBER["European Terrestrial Reference Frame 1993"],MEMBER["European Terrestrial Reference Frame 1994"],MEMBER["European Terrestrial Reference Frame 1996"],MEMBER["European Terrestrial Reference Frame 1997"],MEMBER["European Terrestrial Reference Frame 2000"],MEMBER["European Terrestrial Reference Frame 2005"],MEMBER["European Terrestrial Reference Frame 2014"],ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[0.1]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4258]],CONVERSION["UTM zone 32N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",9,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["Europe between 6°E and 12°E: Austria; Belgium; Denmark - onshore and offshore; Germany - onshore and offshore; Norway including - onshore and offshore; Spain - offshore."],BBOX[38.76,6,84.33,12]],ID["EPSG",25832]]</wkt>
|
|
||||||
<proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4>
|
|
||||||
<srsid>2105</srsid>
|
|
||||||
<srid>25832</srid>
|
|
||||||
<authid>EPSG:25832</authid>
|
|
||||||
<description>ETRS89 / UTM zone 32N</description>
|
|
||||||
<projectionacronym>utm</projectionacronym>
|
|
||||||
<ellipsoidacronym>EPSG:7019</ellipsoidacronym>
|
|
||||||
<geographicflag>false</geographicflag>
|
|
||||||
</spatialrefsys>
|
|
||||||
</crs>
|
|
||||||
<extent/>
|
|
||||||
</qgis>
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
UTF-8
|
|
||||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
|
||||||
<qgis version="3.20.3-Odense">
|
|
||||||
<identifier></identifier>
|
|
||||||
<parentidentifier></parentidentifier>
|
|
||||||
<language></language>
|
|
||||||
<type>dataset</type>
|
|
||||||
<title></title>
|
|
||||||
<abstract>aktualisiert am 29.8.23; MEB</abstract>
|
|
||||||
<links/>
|
|
||||||
<fees></fees>
|
|
||||||
<encoding></encoding>
|
|
||||||
<crs>
|
|
||||||
<spatialrefsys>
|
|
||||||
<wkt>PROJCRS["ETRS89 / UTM zone 32N",BASEGEOGCRS["ETRS89",ENSEMBLE["European Terrestrial Reference System 1989 ensemble",MEMBER["European Terrestrial Reference Frame 1989"],MEMBER["European Terrestrial Reference Frame 1990"],MEMBER["European Terrestrial Reference Frame 1991"],MEMBER["European Terrestrial Reference Frame 1992"],MEMBER["European Terrestrial Reference Frame 1993"],MEMBER["European Terrestrial Reference Frame 1994"],MEMBER["European Terrestrial Reference Frame 1996"],MEMBER["European Terrestrial Reference Frame 1997"],MEMBER["European Terrestrial Reference Frame 2000"],MEMBER["European Terrestrial Reference Frame 2005"],MEMBER["European Terrestrial Reference Frame 2014"],ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[0.1]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4258]],CONVERSION["UTM zone 32N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",9,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["Europe between 6°E and 12°E: Austria; Belgium; Denmark - onshore and offshore; Germany - onshore and offshore; Norway including - onshore and offshore; Spain - offshore."],BBOX[38.76,6,84.33,12]],ID["EPSG",25832]]</wkt>
|
|
||||||
<proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4>
|
|
||||||
<srsid>2105</srsid>
|
|
||||||
<srid>25832</srid>
|
|
||||||
<authid>EPSG:25832</authid>
|
|
||||||
<description>ETRS89 / UTM zone 32N</description>
|
|
||||||
<projectionacronym>utm</projectionacronym>
|
|
||||||
<ellipsoidacronym>EPSG:7019</ellipsoidacronym>
|
|
||||||
<geographicflag>false</geographicflag>
|
|
||||||
</spatialrefsys>
|
|
||||||
</crs>
|
|
||||||
<extent/>
|
|
||||||
</qgis>
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
UTF-8
|
|
||||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
|
||||||
<qgis version="3.20.3-Odense">
|
|
||||||
<identifier></identifier>
|
|
||||||
<parentidentifier></parentidentifier>
|
|
||||||
<language></language>
|
|
||||||
<type>dataset</type>
|
|
||||||
<title></title>
|
|
||||||
<abstract>aktualisiert am 29.8.23</abstract>
|
|
||||||
<links/>
|
|
||||||
<fees></fees>
|
|
||||||
<encoding></encoding>
|
|
||||||
<crs>
|
|
||||||
<spatialrefsys>
|
|
||||||
<wkt>PROJCRS["ETRS89 / UTM zone 32N",BASEGEOGCRS["ETRS89",ENSEMBLE["European Terrestrial Reference System 1989 ensemble",MEMBER["European Terrestrial Reference Frame 1989"],MEMBER["European Terrestrial Reference Frame 1990"],MEMBER["European Terrestrial Reference Frame 1991"],MEMBER["European Terrestrial Reference Frame 1992"],MEMBER["European Terrestrial Reference Frame 1993"],MEMBER["European Terrestrial Reference Frame 1994"],MEMBER["European Terrestrial Reference Frame 1996"],MEMBER["European Terrestrial Reference Frame 1997"],MEMBER["European Terrestrial Reference Frame 2000"],MEMBER["European Terrestrial Reference Frame 2005"],MEMBER["European Terrestrial Reference Frame 2014"],ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[0.1]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4258]],CONVERSION["UTM zone 32N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",9,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["Europe between 6°E and 12°E: Austria; Belgium; Denmark - onshore and offshore; Germany - onshore and offshore; Norway including - onshore and offshore; Spain - offshore."],BBOX[38.76,6,84.33,12]],ID["EPSG",25832]]</wkt>
|
|
||||||
<proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4>
|
|
||||||
<srsid>2105</srsid>
|
|
||||||
<srid>25832</srid>
|
|
||||||
<authid>EPSG:25832</authid>
|
|
||||||
<description>ETRS89 / UTM zone 32N</description>
|
|
||||||
<projectionacronym>utm</projectionacronym>
|
|
||||||
<ellipsoidacronym>EPSG:7019</ellipsoidacronym>
|
|
||||||
<geographicflag>false</geographicflag>
|
|
||||||
</spatialrefsys>
|
|
||||||
</crs>
|
|
||||||
<extent/>
|
|
||||||
</qgis>
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
UTF-8
|
|
||||||
Binary file not shown.
|
|
@ -1 +0,0 @@
|
||||||
PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
|
|
||||||
<qgis version="3.20.3-Odense">
|
|
||||||
<identifier></identifier>
|
|
||||||
<parentidentifier></parentidentifier>
|
|
||||||
<language></language>
|
|
||||||
<type>dataset</type>
|
|
||||||
<title></title>
|
|
||||||
<abstract>aktualisiert am 29.8.23; MEB</abstract>
|
|
||||||
<links/>
|
|
||||||
<fees></fees>
|
|
||||||
<encoding></encoding>
|
|
||||||
<crs>
|
|
||||||
<spatialrefsys>
|
|
||||||
<wkt>PROJCRS["ETRS89 / UTM zone 32N",BASEGEOGCRS["ETRS89",ENSEMBLE["European Terrestrial Reference System 1989 ensemble",MEMBER["European Terrestrial Reference Frame 1989"],MEMBER["European Terrestrial Reference Frame 1990"],MEMBER["European Terrestrial Reference Frame 1991"],MEMBER["European Terrestrial Reference Frame 1992"],MEMBER["European Terrestrial Reference Frame 1993"],MEMBER["European Terrestrial Reference Frame 1994"],MEMBER["European Terrestrial Reference Frame 1996"],MEMBER["European Terrestrial Reference Frame 1997"],MEMBER["European Terrestrial Reference Frame 2000"],MEMBER["European Terrestrial Reference Frame 2005"],MEMBER["European Terrestrial Reference Frame 2014"],ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[0.1]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4258]],CONVERSION["UTM zone 32N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",9,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["Europe between 6°E and 12°E: Austria; Belgium; Denmark - onshore and offshore; Germany - onshore and offshore; Norway including - onshore and offshore; Spain - offshore."],BBOX[38.76,6,84.33,12]],ID["EPSG",25832]]</wkt>
|
|
||||||
<proj4>+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs</proj4>
|
|
||||||
<srsid>2105</srsid>
|
|
||||||
<srid>25832</srid>
|
|
||||||
<authid>EPSG:25832</authid>
|
|
||||||
<description>ETRS89 / UTM zone 32N</description>
|
|
||||||
<projectionacronym>utm</projectionacronym>
|
|
||||||
<ellipsoidacronym>EPSG:7019</ellipsoidacronym>
|
|
||||||
<geographicflag>false</geographicflag>
|
|
||||||
</spatialrefsys>
|
|
||||||
</crs>
|
|
||||||
<extent/>
|
|
||||||
</qgis>
|
|
||||||
Binary file not shown.
Binary file not shown.
292
water-game.py
292
water-game.py
|
|
@ -1,201 +1,161 @@
|
||||||
# Simple top-down game skeleton with WASD movement and water bottle shooting
|
# Simple top-down shooter with WASD player, arrow-key enemy, health bar, minimap, and raster background
|
||||||
import pygame
|
import pygame, sys, numpy as np, rasterio
|
||||||
import sys
|
|
||||||
import numpy as np
|
|
||||||
import rasterio
|
|
||||||
|
|
||||||
pygame.init()
|
pygame.init()
|
||||||
|
|
||||||
WIDTH, HEIGHT = 800, 600
|
WIDTH, HEIGHT = 800, 600
|
||||||
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
|
WIN = pygame.display.set_mode((WIDTH, HEIGHT))
|
||||||
pygame.display.set_caption("Water Bottle Shooter")
|
pygame.display.set_caption("Water Bottle Shooter")
|
||||||
|
|
||||||
WHITE = (255, 255, 255)
|
PLAYER_SIZE, PLAYER_SPEED = 40, 5
|
||||||
BLUE = (0, 150, 255)
|
WATER_SIZE, WATER_SPEED = 10, 10
|
||||||
PLAYER_COLOR = (200, 200, 0)
|
KILL_RADIUS = 30
|
||||||
WATER_COLOR = (0, 180, 255)
|
MINIMAP_SIZE, MINIMAP_MARGIN = 200, 20
|
||||||
|
PLAYER_IMG_PATH = "images/player.png"
|
||||||
PLAYER_SIZE = 40
|
ENEMY_IMG_PATH = "images/enemy.png"
|
||||||
PLAYER_SPEED = 5
|
|
||||||
WATER_SIZE = 10
|
|
||||||
WATER_SPEED = 10
|
|
||||||
|
|
||||||
PLAYER_IMAGE_PATH = "images/player.png" # Path to your player image
|
|
||||||
try:
|
|
||||||
PLAYER_IMAGE = pygame.image.load(PLAYER_IMAGE_PATH).convert_alpha()
|
|
||||||
PLAYER_IMAGE = pygame.transform.scale(PLAYER_IMAGE, (PLAYER_SIZE, PLAYER_SIZE))
|
|
||||||
except Exception as e:
|
|
||||||
print(f"Could not load player image: {e}")
|
|
||||||
PLAYER_IMAGE = None
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ENEMY_IMAGE_PATH = "images/enemy.png" # Path to your player image
|
|
||||||
try:
|
|
||||||
ENEMY_IMAGE = pygame.image.load(ENEMY_IMAGE_PATH).convert_alpha()
|
|
||||||
ENEMY_IMAGE = pygame.transform.scale(ENEMY_IMAGE, (PLAYER_SIZE, PLAYER_SIZE))
|
|
||||||
except Exception as e:
|
|
||||||
print(f"Could not load player image: {e}")
|
|
||||||
ENEMY_IMAGE = None
|
|
||||||
clock = pygame.time.Clock()
|
|
||||||
|
|
||||||
# Load raster map as background
|
|
||||||
|
|
||||||
# Load full raster as a surface
|
|
||||||
def load_full_map_surface(path):
|
|
||||||
try:
|
|
||||||
src = rasterio.open(path)
|
|
||||||
arr = src.read(1)
|
|
||||||
arr = arr - 272.15 # Convert Kelvin to Celsius if needed
|
|
||||||
arr = np.nan_to_num(arr, nan=0)
|
|
||||||
arr = np.clip(arr, np.percentile(arr, 5), np.percentile(arr, 95))
|
|
||||||
arr = (arr - arr.min()) / (arr.max() - arr.min()) * 255
|
|
||||||
arr = arr.astype(np.uint8)
|
|
||||||
arr = np.stack([arr, arr, arr], axis=-1) # grayscale to RGB
|
|
||||||
arr = np.flipud(arr) # flip vertically for correct orientation
|
|
||||||
# Always scale map to at least fill the screen, preserving aspect ratio
|
|
||||||
h, w = arr.shape[:2]
|
|
||||||
scale_factor = max(WIDTH / w, HEIGHT / h)
|
|
||||||
new_w = int(w * scale_factor)
|
|
||||||
new_h = int(h * scale_factor)
|
|
||||||
surf = pygame.surfarray.make_surface(arr)
|
|
||||||
surf = pygame.transform.smoothscale(surf, (new_w, new_h))
|
|
||||||
return surf, new_w, new_h
|
|
||||||
except Exception as e:
|
|
||||||
print(f"Could not load map background: {e}")
|
|
||||||
return None, WIDTH, HEIGHT
|
|
||||||
|
|
||||||
MAP_PATH = "results/s2_2025.tif"
|
MAP_PATH = "results/s2_2025.tif"
|
||||||
map_surface, MAP_W, MAP_H = load_full_map_surface(MAP_PATH)
|
|
||||||
|
|
||||||
|
# Load images
|
||||||
|
def load_img(path, size):
|
||||||
|
try:
|
||||||
|
img = pygame.image.load(path).convert_alpha()
|
||||||
|
return pygame.transform.scale(img, size)
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
PLAYER_IMAGE = load_img(PLAYER_IMG_PATH, (PLAYER_SIZE, PLAYER_SIZE))
|
||||||
|
ENEMY_IMAGE = load_img(ENEMY_IMG_PATH, (PLAYER_SIZE, PLAYER_SIZE))
|
||||||
|
|
||||||
|
# Load raster map
|
||||||
|
def load_map(path):
|
||||||
|
try:
|
||||||
|
arr = rasterio.open(path).read(1)
|
||||||
|
arr = np.nan_to_num(arr - 272.15, nan=0)
|
||||||
|
arr = np.clip(arr, np.percentile(arr, 5), np.percentile(arr, 95))
|
||||||
|
arr = ((arr - arr.min()) / (arr.max() - arr.min()) * 255).astype(np.uint8)
|
||||||
|
arr = np.stack([arr, arr, arr], -1)
|
||||||
|
arr = np.rot90(arr, 3)
|
||||||
|
arr = np.fliplr(arr)
|
||||||
|
surf = pygame.surfarray.make_surface(arr)
|
||||||
|
return surf, arr.shape[1], arr.shape[0]
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Map load error: {e}"); return None, WIDTH, HEIGHT
|
||||||
|
map_surface, MAP_W, MAP_H = load_map(MAP_PATH)
|
||||||
|
|
||||||
class Player:
|
class Player:
|
||||||
def __init__(self, x, y):
|
def __init__(self, x, y):
|
||||||
self.x = x
|
self.x, self.y, self.alive = x, y, True
|
||||||
self.y = y
|
self.rect = pygame.Rect(x, y, PLAYER_SIZE, PLAYER_SIZE)
|
||||||
self.rect = pygame.Rect(self.x, self.y, PLAYER_SIZE, PLAYER_SIZE)
|
self.dir = "up"
|
||||||
self.direction = "up" # Default direction
|
|
||||||
|
|
||||||
def move(self, keys):
|
def move(self, keys):
|
||||||
if keys[pygame.K_w]:
|
if not self.alive: return
|
||||||
self.y -= PLAYER_SPEED
|
dx = dy = 0
|
||||||
self.direction = "up"
|
if keys[pygame.K_w]: dy -= PLAYER_SPEED; self.dir = "up"
|
||||||
if keys[pygame.K_s]:
|
if keys[pygame.K_s]: dy += PLAYER_SPEED; self.dir = "down"
|
||||||
self.y += PLAYER_SPEED
|
if keys[pygame.K_a]: dx -= PLAYER_SPEED; self.dir = "left"
|
||||||
self.direction = "down"
|
if keys[pygame.K_d]: dx += PLAYER_SPEED; self.dir = "right"
|
||||||
if keys[pygame.K_a]:
|
self.x = max(0, min(MAP_W-PLAYER_SIZE, self.x+dx))
|
||||||
self.x -= PLAYER_SPEED
|
self.y = max(0, min(MAP_H-PLAYER_SIZE, self.y+dy))
|
||||||
self.direction = "left"
|
|
||||||
if keys[pygame.K_d]:
|
|
||||||
self.x += PLAYER_SPEED
|
|
||||||
self.direction = "right"
|
|
||||||
# Clamp to map boundaries
|
|
||||||
self.x = max(0, min(MAP_W - PLAYER_SIZE, self.x))
|
|
||||||
self.y = max(0, min(MAP_H - PLAYER_SIZE, self.y))
|
|
||||||
self.rect.topleft = (self.x, self.y)
|
self.rect.topleft = (self.x, self.y)
|
||||||
|
def draw(self, win, ox, oy):
|
||||||
def draw(self, win, offset_x, offset_y):
|
if not self.alive: return
|
||||||
if PLAYER_IMAGE:
|
img = PLAYER_IMAGE or None
|
||||||
win.blit(PLAYER_IMAGE, (self.x - offset_x, self.y - offset_y))
|
if img: win.blit(img, (self.x-ox, self.y-oy))
|
||||||
else:
|
else: pygame.draw.rect(win, (200,200,0), (self.x-ox, self.y-oy, PLAYER_SIZE, PLAYER_SIZE))
|
||||||
pygame.draw.rect(win, PLAYER_COLOR, (self.x - offset_x, self.y - offset_y, PLAYER_SIZE, PLAYER_SIZE))
|
|
||||||
|
|
||||||
class Enemy:
|
class Enemy:
|
||||||
def __init__(self, x, y):
|
def __init__(self, x, y):
|
||||||
self.x = x
|
self.x, self.y = x, y
|
||||||
self.y = y
|
self.rect = pygame.Rect(x, y, PLAYER_SIZE//2, PLAYER_SIZE//2)
|
||||||
self.rect = pygame.Rect(self.x, self.y, PLAYER_SIZE /2, PLAYER_SIZE /2)
|
self.dir = "up"
|
||||||
self.direction = "up" # Default direction
|
self.max_health, self.health = 100, 100
|
||||||
|
|
||||||
def move(self, keys):
|
def move(self, keys):
|
||||||
if keys[pygame.K_UP]:
|
dx = dy = 0
|
||||||
self.y -= PLAYER_SPEED
|
if keys[pygame.K_UP]: dy -= PLAYER_SPEED; self.dir = "up"
|
||||||
self.direction = "up"
|
if keys[pygame.K_DOWN]: dy += PLAYER_SPEED; self.dir = "down"
|
||||||
if keys[pygame.K_DOWN]:
|
if keys[pygame.K_LEFT]: dx -= PLAYER_SPEED; self.dir = "left"
|
||||||
self.y += PLAYER_SPEED
|
if keys[pygame.K_RIGHT]: dx += PLAYER_SPEED; self.dir = "right"
|
||||||
self.direction = "down"
|
self.x = max(0, min(MAP_W-PLAYER_SIZE//2, self.x+dx))
|
||||||
if keys[pygame.K_LEFT]:
|
self.y = max(0, min(MAP_H-PLAYER_SIZE//2, self.y+dy))
|
||||||
self.x -= PLAYER_SPEED
|
|
||||||
self.direction = "left"
|
|
||||||
if keys[pygame.K_RIGHT]:
|
|
||||||
self.x += PLAYER_SPEED
|
|
||||||
self.direction = "right"
|
|
||||||
# Clamp to map boundaries
|
|
||||||
self.x = max(0, min(MAP_W - PLAYER_SIZE, self.x))
|
|
||||||
self.y = max(0, min(MAP_H - PLAYER_SIZE, self.y))
|
|
||||||
self.rect.topleft = (self.x, self.y)
|
self.rect.topleft = (self.x, self.y)
|
||||||
|
def draw(self, win, ox, oy):
|
||||||
def draw(self, win, offset_x, offset_y):
|
img = ENEMY_IMAGE or None
|
||||||
if ENEMY_IMAGE:
|
if img: win.blit(img, (self.x-ox, self.y-oy))
|
||||||
win.blit(ENEMY_IMAGE, (self.x - offset_x, self.y - offset_y))
|
else: pygame.draw.rect(win, (200,200,0), (self.x-ox, self.y-oy, PLAYER_SIZE//2, PLAYER_SIZE//2))
|
||||||
else:
|
# Health bar
|
||||||
pygame.draw.rect(win, PLAYER_COLOR, (self.x - offset_x, self.y - offset_y, PLAYER_SIZE, PLAYER_SIZE))
|
bw, bh = PLAYER_SIZE//2, 6
|
||||||
|
ratio = self.health/self.max_health
|
||||||
|
bx, by = self.x-ox, self.y-oy-bh-2
|
||||||
|
pygame.draw.rect(win, (255,0,0), (bx,by,bw,bh))
|
||||||
|
pygame.draw.rect(win, (0,255,0), (bx,by,int(bw*ratio),bh))
|
||||||
|
def take_damage(self, amt):
|
||||||
|
self.health = max(0, self.health-amt)
|
||||||
|
def check_kill_player(self, player):
|
||||||
|
dx = (self.x+PLAYER_SIZE//4)-(player.x+PLAYER_SIZE//2)
|
||||||
|
dy = (self.y+PLAYER_SIZE//4)-(player.y+PLAYER_SIZE//2)
|
||||||
|
if (dx**2+dy**2)**0.5 < KILL_RADIUS: player.alive = False
|
||||||
|
|
||||||
class WaterBottle:
|
class WaterBottle:
|
||||||
def __init__(self, x, y, direction):
|
def __init__(self, x, y, dir):
|
||||||
self.x = x + PLAYER_SIZE // 2 - WATER_SIZE // 2
|
self.x = x+PLAYER_SIZE//2-WATER_SIZE//2
|
||||||
self.y = y + PLAYER_SIZE // 2 - WATER_SIZE // 2
|
self.y = y+PLAYER_SIZE//2-WATER_SIZE//2
|
||||||
self.direction = direction
|
self.dir = dir
|
||||||
self.rect = pygame.Rect(self.x, self.y, WATER_SIZE, WATER_SIZE)
|
self.rect = pygame.Rect(self.x, self.y, WATER_SIZE, WATER_SIZE)
|
||||||
|
|
||||||
def move(self):
|
def move(self):
|
||||||
if self.direction == "up":
|
if self.dir=="up": self.y -= WATER_SPEED
|
||||||
self.y -= WATER_SPEED
|
elif self.dir=="down": self.y += WATER_SPEED
|
||||||
elif self.direction == "down":
|
elif self.dir=="left": self.x -= WATER_SPEED
|
||||||
self.y += WATER_SPEED
|
elif self.dir=="right": self.x += WATER_SPEED
|
||||||
elif self.direction == "left":
|
|
||||||
self.x -= WATER_SPEED
|
|
||||||
elif self.direction == "right":
|
|
||||||
self.x += WATER_SPEED
|
|
||||||
self.rect.topleft = (self.x, self.y)
|
self.rect.topleft = (self.x, self.y)
|
||||||
|
def draw(self, win, ox, oy):
|
||||||
|
pygame.draw.rect(win, (0,180,255), (self.x-ox, self.y-oy, WATER_SIZE, WATER_SIZE))
|
||||||
|
|
||||||
def draw(self, win, offset_x, offset_y):
|
def draw_minimap(win, map_surface, player, enemy, bottles):
|
||||||
pygame.draw.rect(win, WATER_COLOR, (self.x - offset_x, self.y - offset_y, WATER_SIZE, WATER_SIZE))
|
mini = pygame.transform.smoothscale(map_surface, (MINIMAP_SIZE, MINIMAP_SIZE))
|
||||||
|
win.blit(mini, (WIDTH-MINIMAP_SIZE-MINIMAP_MARGIN, MINIMAP_MARGIN))
|
||||||
|
def map2mini(x,y):
|
||||||
|
mx = int(x/MAP_W*MINIMAP_SIZE)
|
||||||
|
my = int(y/MAP_H*MINIMAP_SIZE)
|
||||||
|
return WIDTH-MINIMAP_SIZE-MINIMAP_MARGIN+mx, MINIMAP_MARGIN+my
|
||||||
|
pygame.draw.circle(win, (0,255,0), map2mini(player.x+PLAYER_SIZE//2, player.y+PLAYER_SIZE//2), 5)
|
||||||
|
pygame.draw.circle(win, (255,0,0), map2mini(enemy.x+PLAYER_SIZE//4, enemy.y+PLAYER_SIZE//4), 5)
|
||||||
|
for b in bottles:
|
||||||
|
pygame.draw.circle(win, (0,180,255), map2mini(b.x, b.y), 3)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# Start player in center of map
|
player = Player(MAP_W//2, MAP_H//2)
|
||||||
player = Player(MAP_W // 2, MAP_H // 2)
|
enemy = Enemy(MAP_W//3, MAP_H//3)
|
||||||
enemy = Enemy(MAP_W // 3, MAP_H // 3)
|
bottles = []
|
||||||
water_bottles = []
|
minimap_visible = True
|
||||||
|
clock = pygame.time.Clock()
|
||||||
running = True
|
running = True
|
||||||
while running:
|
while running:
|
||||||
clock.tick(60)
|
clock.tick(60)
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if event.type == pygame.QUIT:
|
if event.type==pygame.QUIT: running=False
|
||||||
running = False
|
if event.type==pygame.KEYDOWN:
|
||||||
if event.type == pygame.KEYDOWN:
|
if event.key==pygame.K_SPACE: bottles.append(WaterBottle(player.x, player.y, player.dir))
|
||||||
if event.key == pygame.K_SPACE:
|
if event.key==pygame.K_m: minimap_visible = not minimap_visible
|
||||||
# Shoot water bottle
|
|
||||||
water_bottles.append(WaterBottle(player.x, player.y, player.direction))
|
|
||||||
|
|
||||||
keys = pygame.key.get_pressed()
|
keys = pygame.key.get_pressed()
|
||||||
player.move(keys)
|
player.move(keys)
|
||||||
enemy.move(keys)
|
enemy.move(keys)
|
||||||
for bottle in water_bottles:
|
enemy.check_kill_player(player)
|
||||||
bottle.move()
|
for b in bottles[:]:
|
||||||
|
b.move()
|
||||||
# Remove bottles that go off map
|
if enemy.rect.colliderect(b.rect): enemy.take_damage(20); bottles.remove(b)
|
||||||
water_bottles = [b for b in water_bottles if 0 <= b.x <= MAP_W and 0 <= b.y <= MAP_H]
|
bottles = [b for b in bottles if 0<=b.x<=MAP_W and 0<=b.y<=MAP_H]
|
||||||
|
ox = max(0, min(player.x+PLAYER_SIZE//2-WIDTH//2, MAP_W-WIDTH))
|
||||||
# Camera offset: keep player centered unless near edge
|
oy = max(0, min(player.y+PLAYER_SIZE//2-HEIGHT//2, MAP_H-HEIGHT))
|
||||||
offset_x = max(0, min(player.x + PLAYER_SIZE // 2 - WIDTH // 2, MAP_W - WIDTH))
|
if map_surface: WIN.blit(map_surface, (0,0), area=pygame.Rect(ox,oy,WIDTH,HEIGHT))
|
||||||
offset_y = max(0, min(player.y + PLAYER_SIZE // 2 - HEIGHT // 2, MAP_H - HEIGHT))
|
else: WIN.fill((255,255,255))
|
||||||
|
player.draw(WIN, ox, oy)
|
||||||
# Draw map portion
|
for b in bottles: b.draw(WIN, ox, oy)
|
||||||
if map_surface:
|
enemy.draw(WIN, ox, oy)
|
||||||
WIN.blit(map_surface, (0, 0), area=pygame.Rect(offset_x, offset_y, WIDTH, HEIGHT))
|
if minimap_visible: draw_minimap(WIN, map_surface, player, enemy, bottles)
|
||||||
else:
|
|
||||||
WIN.fill(WHITE)
|
|
||||||
player.draw(WIN, offset_x, offset_y)
|
|
||||||
for bottle in water_bottles:
|
|
||||||
bottle.draw(WIN, offset_x, offset_y)
|
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
|
if not player.alive:
|
||||||
|
font = pygame.font.SysFont(None, 48)
|
||||||
|
text = font.render("Game Over!", True, (255,0,0))
|
||||||
|
WIN.blit(text, (WIDTH//2-text.get_width()//2, HEIGHT//2-text.get_height()//2))
|
||||||
|
pygame.display.update(); pygame.time.wait(2000); running=False
|
||||||
|
pygame.quit(); sys.exit()
|
||||||
|
|
||||||
pygame.quit()
|
if __name__=="__main__": main()
|
||||||
sys.exit()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue