全球耕地数据集地址:
https://github.com/fiboa/data
List of datasets
Title
License
Provider
Austria
CC-BY-4.0
Agrarmarkt Austria
BRP Crop Field Boundaries for The Netherlands (CAP-based)
CC0-1.0
Denmark Crop Fields (Marker)
CC-0
Field boundaries for Belgium Wallonia
No conditions apply to access and use
Field boundaries for Cambodia and Vietnam (AI4SmallFarms)
CC-BY-4.0
Field boundaries for Catalonia, Spain
Open Information Use License - Catalonia
Field boundaries for Croatia
Public ...
在地理信息系统 (GIS) 中,边界框 (Bounding Box) 是用来描述一个几何图形的最小矩形区域的。它可以简单地表示为两个坐标:左下角和右上角的点。在这篇文章中,我们将介绍如何使用 Python 的 geojson 库计算一个多边形的边界框。
代码实现下面是一段简单的 Python 代码,它接受一个坐标列表,计算出包含这些坐标的边界框,并返回一个表示这个边界框的字符串:
import os
def count_lines_in_files(directory):
total_lines = 0
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.py'):
file_path = os.path.join(root, file)
with open(file_path, 'r', encoding='utf-8') as f:
...
在地理信息系统 (GIS) 中,边界框 (Bounding Box) 是用来描述一个几何图形的最小矩形区域的。它可以简单地表示为两个坐标:左下角和右上角的点。在这篇文章中,我们将介绍如何使用 Python 的 geojson 库计算一个多边形的边界框。
代码实现下面是一段简单的 Python 代码,它接受一个坐标列表,计算出包含这些坐标的边界框,并返回一个表示这个边界框的字符串:
import geojson
def bbox(coord_list):
# 获取所有的x坐标和y坐标
xs, ys = zip(*coord_list)
# 计算最小最大值
min_x, max_x = min(xs), max(xs)
min_y, max_y = min(ys), max(ys)
# 返回边界框
return (min_x, min_y, max_x, max_y)
# 测试数据:一个简单的 GeoJSON 多边形
poly = geojson.Polygon([[
(2.38, 57.322),
(23.194 ...
在使用 OGR 和 GDAL 的 Python 绑定时,有时你可能会遇到一个奇怪的现象:同样的代码结构,在某些情况下正常运行,而在其他情况下却导致 Python 闪退崩溃。本文将解释这种现象的原因,并演示如何避免这种问题。
问题重现假设我们正在使用一个 shapefile 文件,并尝试从中提取几何图形信息:
from osgeo import ogr
shp_ds = ogr.Open(r'D:\gadm\France\gadm41_FRA_0.shp')
lyr = shp_ds.GetLayer(0)
lyr.GetFeature(0).GetGeometryRef().GetX() # 这一行可能导致崩溃
结果会发生闪退。
上面的代码在执行时可能导致 Python 闪退。通过修改代码,问题似乎得到解决:
from osgeo import ogr
shp_ds = ogr.Open(r'D:\gadm\France\gadm41_FRA_0.shp')
lyr = shp_ds.GetLayer(0)
feature = lyr.GetFeature(0)
featur ...
读研的时候,研究方法跟modis是不搭边的。工作后也没机会去使用modis。
modis的数据格式是hdf。
hdf文件和nc文件非常像,而我对nc格式的文件算是比较熟悉。
这么多年下来,我确实是没处理过modis。
modis的数据处理是不难的。
昨天看到一个留言说,怎么将modis影像保存为tif格式。
所以,今天的主题就是,讲解怎么将modis影像保存为tif格式。
代码#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/10/12 19:22
# @File : hdf2tif.py
'''
modis 数据 由hdf格式转换为tif格式
'''
from osgeo import gdal
import os
import glob
# gdal打开hdf数据集
def modishdf2tif(inpath, outpath = None):
os.chdir(inpath)
file_list = glob.glob("*.hdf")
for i in file_li ...
写代码有几年了,平常我的主力语言是python。总体来说,python相对于其他语言可以说是很简单。很多事情和python是一样的,入门容易,精通难。
为什么我经常使用python,原因在于Python 是地理信息系统(GIS)和遥感领域的热门编程语言。Python 的强大之处在于它拥有丰富的库,这些库不仅让处理大量的空间数据变得更加简单,还能帮助我们进行复杂的地理数据分析和可视化展示。无论是处理卫星影像,还是做地理空间数据的计算,Python 都提供了适合新手和专业人士使用的工具。
本文探讨了我本人使用处理 GIS 和遥感数据的一些 Python 库。
GIS 和遥感领域的顶级 Python 库1. GDAL/OGR
GDAL是几乎所有地理空间软件的支柱和重要组成部分。很多的gis软件在底层都使用gadl来处理数据,不限于arcgis、google earth等。
GDAL 支持读取、写入和转换栅格数据格式。而OGR 可处理矢量格式。
提一嘴,以前我在安装gdal的时候,一般是先下载whl文件,然后在本地安装。
后面使用linux多了,安装gdal的流程也发生了改变。
现在是无论是 ...
pyinstaller打包含有folium模块,运行错误的解决方法 在用pyinstaller打包folium模块的程序后,运行出现一堆错误代码。解决办法参照
基本思路是修改python库site-packages内对应文件里的环境变量
\folium\folium.py
\folium\raster_layers.py
\branca\element.py
#ENV = Environment(loader=PackageLoader('folium', 'templates'))
import os, sys
from jinja2 import FileSystemLoader
if getattr(sys, 'frozen', False):
# we are running in a bundle
templatedir = sys._MEIPASS
else:
# we are running in a normal Python environment
templatedir = os.path.dirname(os.path ...
OGR Python 学习教程大纲
引言
什么是OGR?OGR是一个用于处理矢量数据的库,是GDAL(地理数据抽象库)的一部分。它支持多种矢量数据格式,如Shapefile、GeoJSON和KML等,可以进行读取、写入和转换等操作。OGR使得在Python中处理空间数据变得更加方便和高效。
OGR在GIS中的应用
OGR在GIS中的应用非常广泛,主要包括以下几个方面:
数据导入与导出:能够读取和写入多种格式的空间数据,使得不同数据源之间的转换变得简单。例如,将Shapefile转换为GeoJSON,或将KML导出为Shapefile。
数据处理:可以对矢量数据进行操作,如剪切、合并、缓冲区分析等,帮助用户进行空间分析。
数据查询:支持属性查询和空间查询,用户可以根据特定条件筛选和检索数据,方便数据分析和可视化。
坐标转换:支持坐标系统的转换,用户可以在不同的坐标参考系之间进行数据转换,以确保数据的准确性。
自动化与批处理:可以使用Python脚本自动化处理大量的空间数据,提高工作效率,适用于数据预处理和分析工作流。
环境设置
安装GDAL库
安装GDAL库可以通过以下几种方法 ...
最近买了一台云服务器,这是我目前买的第三台云服务器。我习惯用ubuntu系统,所以就安装了ubuntu22.4版本。现在记录一下怎么在linux下安装python。
因为我买的是轻量型服务器,自己私下玩一下linux
ubuntu安装miniconda步骤 1: 下载Miniconda安装脚本wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
步骤 2: 安装Miniconda一旦下载完成,就可以开始安装Miniconda了:
bash Miniconda3-latest-Linux-x86_64.sh
步骤 3: 配置环境变量source ~/.bashrc
如果安装成功,可以通过运行以下命令来验证:
conda --version
安装一些常用的库比如numpy、pillow、gdal
conda install numpy pillow gdal
验证一下是否安装成功
在以前我在学习监督分类的时候,使用过这个功能。即输入行列号,获取遥感影像的对应位置的数值。
往往在写和遥感相关的代码时,我优先考虑使用python的gdal库去完成,而不是rasterio。这个是是个人的习惯。
rasterio很优秀,它是基于gdal库进行编写、扩张的python库,在安装完rasterio后,我们可以直接去学它的源码,它的源码结构很清晰,比较容易去理解,不过这是另一件事情了,我们还是把目光转向今天的主题:通过行列号获取遥感影像的具体位置的数值
现在使用单波段的遥感影像作为示例,讲一讲如何实现这个功能。
只需要十行代码即可。对于可以扩展的功能,一般会写成一个类而不是一个函数。
from osgeo import gdal
class GetImageXY:
def __init__(self, image_path):
self.image_path = image_path
self.read_image()
def read_image(self):
"""
read image an ...