Segment Anything Model Geospatial (SAM-Geo) 创建交互式地图

news2025/1/10 23:53:12

SAM-Geo是一个用于地理空间数据的Python 包,可在 PyPI 和 conda-forge 上使用。本节教程是SAM-Geo官网的一个教程,根据输入提示范围创建mask遮罩。后面还有一种基于提示词创建的方式,如只输出房屋、道路、树木等,下一期我们专门写一篇。

输入提示是指提供给模型以指导其生成或决策过程的信息或指令。在使用 Segment Anything Model (SAM) 生成对象掩码的上下文中,输入提示可以是单个点或多个点,用于指定要为其生成掩码的对象或区域。

安装和导入库   

pip install segment-geospatial leafmap localtileserverimport os          
import leafmap          
from samgeo import SamGeo, tms_to_geotiff

创建交互式地图  

m = leafmap.Map(center=[10.029939778759502, 105.76756428014754], zoom=17, height="600px", width="800px")          
m.add_basemap("SATELLITE")          
m

  

要在地图上选择感兴趣的区域,您可以平移和缩放到所需位置。然后,使用绘图工具在地图上创建多边形或矩形。

if m.user_roi is not None:          
    bbox = m.user_roi_bounds()          
    bbox          
else:          
    bbox = [105.764, 10.0274, 105.7715, 10.0329]
image = "ctu.tif"          
tms_to_geotiff(output=image, bbox=bbox, zoom=16, source="Satellite", overwrite=True)

要使用您自己的图像,您可以选择取消注释并运行以下单元格。这将允许您将自定义图像合并到流程中。

# image = '/path/to/your/own/image.tif'

要在地图上展示下载的图像,您可以直接在地图界面中显示它。这使您能够将下载的图像与其他地图元素或图层一起可视化。

要初始化 SAM 类,您需要执行以下步骤:

    • 指定模型检查点的文件路径:如果您有要使用的特定模型检查点,请提供该检查点的文件路径。如果未指定检查点,模型将下载到工作目录。

    • 设置 automatic=False:要禁用 SamAutomaticMaskGenerator 并启用 SamPredictor,请将自动参数设置为 False。此配置更改允许您更好地控制掩码生成过程。

sam = SamGeo(          
    model_type="vit_h",          
    checkpoint="sam_vit_h_4b8939.pth",          
    automatic=False,          
    sam_kwargs=None,          
)

要指定要分割的图像,您需要提供要分割的图像的路径或引用。这可以通过指示图像的文件路径或将图像对象直接传递给分割函数来实现。

sam.set_image(image)

对于使用输入点的图像分割,您可以灵活地使用单个点来分割对象。该点可以定义为表示 (col, row) 或 (lon, lat) 坐标的元组 (x, y)。或者,您可以使用矢量数据集的文件路径指定点。

如果输入的点不是(col, row)格式,可以提供point_crs参数自动将点转换为对应的图像列坐标和行坐标。这确保了点与图像正确对齐以进行准确分割。

单点输入:

point_coords = [[105.76755698844329, 10.029964842544715]]          
sam.predict(point_coords, point_labels=1, point_crs="EPSG:4326", output="mask1.tif")          
m.add_raster("mask1.tif", layer_name="Mask1", nodata=0, cmap="Blues", opacity=1)          
m

多点输入:

point_coords = [[105.76755698844329, 10.029964842544715], [105.76807137023872, 10.02981441080665], [105.76721100868511, 10.029391083681455]]          
sam.predict(point_coords, point_labels=1, point_crs="EPSG:4326", output="mask2.tif")          
m.add_raster("mask2.tif", layer_name="Mask2", nodata=0, cmap="Greens", opacity=1)          
m

交互式分割  

显示交互地图:打开支持交互的地图界面。这可以使用合适的库或工具来实现。

  1. 使用标记工具:利用地图界面提供的标记工具在地图上绘制点。这些点用作分割感兴趣对象的标记。

  2. 分割对象:在地图上绘制点后,单击“分割”按钮启动分割过程。幕后的算法或模型将使用这些点作为输入来分割所需的对象。生成的分割将自动添加到地图中。

  3. 重置点和结果:如果需要,点击“重置”按钮清除绘制的点和分割结果。这使您可以重新开始并执行新的细分。

m = sam.show_map()          
m

收录于合集 #GIS系列软件

 34个

上一篇photoshop Beta 破解版下载下一篇几个Arcpy代码应用案例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/688185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IEEE Transactions的模板中,出现subfig包和fontenc包冲突的问题,怎么解决?

IEEE Transactions的模板中,出现subfig包和fontenc包冲突的问题,怎么解决? 本文章记录如何在IEEE Transactions的模板中,出现了subfig包和fontenc包冲突的问题,该怎么解决。 目录 IEEE Transactions的模板中&#xff…

ubuntu系统解压.rar文件问题与解决办法

ubuntu20.04解压rar文件 问题解决办法 问题 在ubuntu系统中,直接解压rar文件可能会报错,或者一直在提取文件中,无法结束。 例如直接右件该rar文件,将文件提取到此处 一直显示这个,无法结束 解决办法 需要安装一些软…

架构师进阶之路 - 架构优化为什么难

目录 业务迭代和技术优化难以兼顾 缺少“上帝”视角思维 系统架构腐化 缺少架构师视角 系统迭代机制 设计规范把控 最近在组织团队内的系统架构优化,总而言之就是难,至于为什么难我这边总结了以下六个方面,记录一下自己的架构师进阶之路吧。&…

css基础知识九:说说flexbox(弹性盒布局模型),以及适用场景?

一、是什么 Flexible Box 简称 flex,意为”弹性布局”,可以简便、完整、响应式地实现各种页面布局 采用Flex布局的元素,称为flex容器container 它的所有子元素自动成为容器成员,称为flex项目item 容器中默认存在两条轴&#xf…

微服务04 分布式搜索引擎 elasticsearch DSL数据聚合 自动补全 数据同步 集群

微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游 分布式搜索引擎03 1.数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎&#x…

【Redis】Redis cluster 集群原理

前言 介绍优点: redis cluster集群模式,既拥有哨兵模式高可用、自动主从切换、高性能的特点,又解决了其只有单主结点承载数据量小的缺点。集群模式可以有多主结点,数据分散到多个主节点上,可以动态扩容。 槽分区的特点…

Rust in Action笔记 第七章 文件和存储

serde 库提供序列化(serialize)和反序列化(deserialize)的特征,通过derive生成,可以把rust的自定义类型(struct)转换成多种常用的兼容类型例如JSON、CBOR、bincode,用于在…

Hive函数(二)

1、炸裂函数 1.1、UDTF概述 定义: UDTF(Table-Generating Functions),接收一行数据,输出一行或多行数据。 1.1.1、explode(ARRAY a) 功能: 语法: select explode(array("a","b",&q…

多商户商城系统源码-加速度jsudo

为了能顺应时代的改变,很多企业都想要搭建一个类似天猫京东类型的b2b2c商城平台,但苦于没有专业的技术,所以他们都会选择成熟的b2b2c商城系统,但市面上的商城系统如此的多,如何选择呢?下面jsudo小编就来教…

函数式编程相关概念介绍

什么是函数式编程 函数式编程(Functional Programming)也称函数程序设计是一种编程范式,它将电脑运算视为函数运算,并且避免使用程序状态以及可变物件。 在js中,函数是一等公民,函数本身既可以作为其他函数…

spark12-13-14

12. Task线程安全问题 12.1 现象和原理 在一个Executor可以同时运行多个Task,如果多个Task使用同一个共享的单例对象,如果对共享的数据同时进行读写操作,会导致线程不安全的问题,为了避免这个问题,可以加锁&#xff…

操作系统—中断和异常、磁盘调度算法、操作系统其他内容

异常 时常由CPU*执行指令的内部事件引起,比如非法操作码、地址越界、算术溢出等,还有缺页异常、除0异常。同时,他会发送给内核,要求内核处理这些异常。 外中断 狭义上的中断指的就是外中断。由CPU执行指令以外的事件引起&#…

linux高并发网络编程开发(广播-组播-本地套接字)14_tcp udp使用场景,广播通信流程,组播通信流程,本地套接字通信流程,epoll反应堆模型

01 tcp udp使用场景 1.tcp使用场景 对数据安全性要求高的时候  登录数据的传输  文件传输http协议  传输层协议-tcp 2.udp使用场景 效率高-实时性要求比较高  视频聊天  通话有实力的大公司  使用upd  在应用层自定义协议,做数据校验 02 广播通信流程 广播…

LLM 开发实战系列 | 01:API进行在线访问和部署

在本文中,我们将使用Python编程语言来展示如何调用OpenAI的GPT-3.5模型。在开始之前,请确保您已经注册了OpenAI API并获得了访问凭证。 环境准备 下载python 方法1:官网 www.python.org 从最开始的开始,先到Python官网下载一个…

零基础自学:2023年的今天,请谨慎进入网络安全行业

前言 2023年的今天,慎重进入网安行业吧,目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多,还有很多高中被挖过来的大佬。 理由很简单,目前来说,信息安全的圈子人少,985、211院校很多都才建…

Linux中安装部署docker

目录 什么是docker系统环境要求安装和使用docker 什么是docker Docker是一个开源的容器化平台,用于帮助开发者更轻松地构建、打包、分发和运行应用程序。它基于容器化技术,利用操作系统层级的虚拟化来隔离应用程序和其依赖的环境。通过使用Docker&#…

javaEE进阶 -初识框架

目录 1.为什么要学框架? 框架的优点展示 2、项目的开发 2.1 Servlet 项目的开发 2.2 Spring Boot 项目开发 3 、Spring Boot编写代码 4、 Spring Boot 运行项目 5、验证程序 6、发布项目 主要讲解 四个框架。 1、Spring 2、Spring Boot 3、Spring NVC 4、…

别只盯着Docker了,这十大容器运行时错过后悔

文章目录 一、Docker二、Containerd三、CRI-O四、Firecracker五、gVisor六、Kata七、Lima八、Lxd九、rkt十、runC如何选择适合自己的容器运行时? MCNU云原生,文章首发地,欢迎微信搜索关注,更多干货,第一时间掌握&#…

Apikit 自学日记:数据结构

您可以将API文档中的重复部分提取出来成为数据结构,方便其他文档中复用。当数据结构发生改变时,所有引用了该数据结构的API文档会同步发生改变。 创建数据结构 进入数据结构管理页面,点击 添加数据结构 按钮,输入相关内容并保存…

XXL-JOB任务调度

简介: XXL-JOB 是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 官网:https://www.xuxueli.com/xxl-job/ 以下业务场景可用任务解决 某电商平台需要每天上午10点,下午3点,晚上8点发…