Skip to article frontmatterSkip to article content
import math

# Center coordinates 这里更改中心坐标点
lat0 = 39.8510179
lon0 = 116.219730

# Calculate half side length (meters) for a 10 km² square 这里可以更改数据范围,以10平方公里为例
half_side = math.sqrt(10_000_000) / 2  # ~1581.14 m

# Approximate degrees per meter 
delta_lat = half_side / 111320  # degrees latitude per meter
lat0_rad = math.radians(lat0)
delta_lon = half_side / (111320 * math.cos(lat0_rad))  # degrees longitude per meter

# Calculate square corner coordinates (lon, lat)
coords = [
    (lon0 - delta_lon, lat0 - delta_lat),
    (lon0 + delta_lon, lat0 - delta_lat),
    (lon0 + delta_lon, lat0 + delta_lat),
    (lon0 - delta_lon, lat0 + delta_lat),
    (lon0 - delta_lon, lat0 - delta_lat)
]

# Build KML content
kml_content = """<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark>
    <name>10km² Square Area</name>
    <Polygon>
      <outerBoundaryIs>
        <LinearRing>
          <coordinates>
"""
for lon, lat in coords:
    kml_content += f"            {lon},{lat},0\n"
kml_content += """          </coordinates>
        </LinearRing>
      </outerBoundaryIs>
    </Polygon>
  </Placemark>
</kml>
"""

# Write to file
file_path = "/kml/square_10km2.kml"
with open(file_path, "w", encoding="utf-8") as f:
    f.write(kml_content)

file_path
'C:/Users/lishuhao/Desktop/kml输出代码/square_10km2.kml'