加更一个小项目中的几个神奇的函数,tiff文件在matlab的读取和显示,以及如何在底图上画图和透明度设置

项目需求:在地图tiff文件上画出轨迹和轨迹周围一定距离的范围

难点:tiff文件格式的读取,图片与经纬度之间的转换,图片具有透明度,在图片上作图

[boston,R] = geotiffread('boston.tif');
figure
%mapshow(boston,R);%完全不建议用这个,太大的tiff文件根本打不开
%axis image off

下面是另一种方法

t = Tiff('peppers_RGB_tiled.tif','r');
imageData = read(t);

imshow(imageData);

I = imread('abb.tif');

imshow(I)

然后是图片经纬度和内在坐标系之间的转换

函数含义
contains确定地理或地图栅格是否包含点
geographicToDiscrete将地理变换为离散坐标
geographicToIntrinsic将地理坐标转换为内在坐标
intrinsicToGeographic 主要使用该函数求坐标将内在变换为地理坐标
intrinsicXToLongitude从内在x转换为经度坐标
intrinsicYToLatitude从内在y转换为纬度坐标
latitudeToIntrinsicY从纬度转换为内在y坐标
longitudeToIntrinsicX从经度转换为内在x坐标
sizesMatch确定地理或地图栅格对象和图像或栅格是否与尺寸兼容
worldFileMatrix返回转换的世界文件参数

 

通过这标红这四个函数就可以实现坐标和经纬度之间的转换(画图必须要用坐标)

然后是第一次设置透明度的问题

matlab的透明度针对的是图形,不能是线条,恰好这次需要画得就是区域

解决的方法是生成很多个随着圆心变动而变动的圆,然后更改透明度

x = r*cos(theta)+lon;

y = r*sin(theta)+lat;

for i = 1:length(lat)

    fill(x,y,'c');%这个是画填充圆的命令

    plot(x,y,'c');%为了好看,如果不用这句话的话会有一个黑色的默认边界

    alpha(0.8);%这个是更改透明度,里面的数据代表的显示的透明度

end

但是有一个小小的问题,当透明度更改的时候导入的底图tiff文件也会变的透明,这时候再多加叠一层非透明度100%的底图即可

耶!~

 

 

### STM32CubeMX 无法生成代码的原因分析 当遇到STM32CubeMX无法生成代码的情况时,可能由多种因素引起。常见的错误原因包括但不限于配置冲突、软件版本不兼容以及特定硬件设置不当。 #### 配置冲突 如果项目中的外设配置存在相互冲突,则可能导致STM32CubeMX无法正常生成初始化代码。例如,在同一总线上启用多个具有相同地址的设备可能会引发此类问题[^1]。 #### 软件版本不兼容 不同版本间的差异也可能造成此现象。确保所使用的STM32CubeMX版本与目标MCU的支持包相匹配非常重要。旧版工具链对于新推出的微控制器型号支持不足或是新版工具对某些老器件不再提供完全支持都可能是原因之一[^2]。 #### 特定硬件设置不当 针对具体应用而做的特殊设定有时也会妨碍代码生成功能。比如使用硬件I2C接口时可能出现的小Bug就属于这种情况之一。这类问题通常需要仔细检查相关参数并参照官方文档调整至合适状态。 ### 解决方案建议 为了有效解决问题,可以尝试以下方法: - **更新STM32CubeMX**:保持开发环境处于最新状态有助于获得更好的兼容性和稳定性。 - **核对外设配置**:逐一排查各个模块之间的潜在冲突点,并适当简化当前设计以排除干扰源。 - **查阅日志信息**:注意观察STM32CubeMX界面底部的状态栏提示或导出详细的诊断报告来获取更多线索。 - **参考官方资源库**:访问STMicroelectronics官方网站查询是否有针对性的技术说明或固件补丁发布。 ```python # 示例伪代码用于展示如何通过Python脚本自动化部分验证过程(仅作示意) import subprocess def check_toolchain_version(): result = subprocess.run(['stm32cube', '--version'], capture_output=True, text=True) print(f"Current STM32CubeMX version is {result.stdout.strip()}") check_toolchain_version() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值