我接近得到我想要的地图.Matplotlib的底图是伟大的,但海岸线太粗,当我放大.我可以读自然地球形状文件,并绘制出来,这是好多了...但是当我尝试和填充的多边形,我认为这是治疗所有的点属于单个多边形.如何迭代多边形并正确显示地图?
提前致谢!
这是代码:
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
%matplotlib inline
landColor, coastColor, oceanColor, popColor, countyColor = '#eedd99','#93ccfa','#93ccfa','#ffee99','#aa9955'
fig = plt.figure()
ax = fig.add_subplot(111)
s = 1900000
m = Basemap(projection='ortho',lon_0=-86.5,lat_0=30.3,resolution='l',llcrnrx=-s,llcrnry=-s,urcrnrx=s,urcrnry=s)
m.drawmapboundary(fill_color=oceanColor) # fill in the ocean
# generic function for reading polygons from file and plotting them on the map. This works with Natural Earth shapes.
def drawShapesFromFile(filename,facecolor,edgecolor,m):
m.readshapefile(filename, 'temp', drawbounds = False)
patches = [] …Run Code Online (Sandbox Code Playgroud) 我需要通过递归搜索生成包含特定字符串的路径的文件列表.我这样做当前是这样的:
for i in iglob(starting_directory+'/**/*', recursive=True):
if filemask in i.split('\\')[-1]: # ignore directories that contain the filemask
filelist.append(i)
Run Code Online (Sandbox Code Playgroud)
这样可行,但是当抓取一个大型目录树时,它的速度非常慢(约10分钟).我们在Windows上,因此不能选择对unix find命令进行外部调用.我的理解是glob比os.walk更快.
有更快的方法吗?
我需要一个很好的算法来计算最接近 python 中的线集合的点,最好是使用最小二乘法。我在一个不起作用的python实现上发现了这篇文章:
我在 Matlab 中找到了这个似乎每个人都喜欢的资源……但我不确定如何将其转换为 python:
https://www.mathworks.com/matlabcentral/fileexchange/37192-intersection-point-of-lines-in-3d-space
我发现很难相信有人还没有这样做过……这肯定是 numpy 或标准包的一部分,对吧?我可能只是没有在寻找正确的术语 - 但我还没有找到它。我可以用每个点或一个点和一个方向来定义线。任何帮助将不胜感激!
这是我正在使用的一组示例点:
第一组线的初始 XYZ 点
array([[-7.07107037, 7.07106748, 1. ],
[-7.34818339, 6.78264559, 1. ],
[-7.61352972, 6.48335745, 1. ],
[-7.8667115 , 6.17372055, 1. ],
[-8.1072994 , 5.85420065, 1. ]])
Run Code Online (Sandbox Code Playgroud)
属于第一组线的角度
[-44.504854, -42.029223, -41.278573, -37.145774, -34.097022]
Run Code Online (Sandbox Code Playgroud)
第二组线的初始 XYZ 点
array([[ 0., -20. , 1. ],
[ 7.99789129e-01, -19.9839984, 1. ],
[ 1.59830153e+00, -19.9360366, 1. ],
[ 2.39423914e+00, -19.8561769, 1. ],
[ 3.18637019e+00, -19.7445510, 1. ]])
Run Code Online (Sandbox Code Playgroud)
属于第二组线的角度
[89.13244, 92.39087, 94.86425, 98.91849, …Run Code Online (Sandbox Code Playgroud) 我想这对任何真正熟悉Cesium的CZML文件的人来说都是一个简单的问题.我只是尝试使用Cesium显示一系列lat/long/alt点作为飞行路径.有人能告诉我"位置"标签应该是什么样子吗?
除非我在错误的地方寻找,否则我没有看到很多CZML的例子.所以很难知道可以使用哪些标签以及如何使用它们(如果你弄错了,Java控制台就不会显示错误).
在Cesium网站上的Sandcastle CZML示例中,相关部分如下所示:
"position" : {
"interpolationAlgorithm" : "LAGRANGE",
"interpolationDegree" : 1,
"epoch" : "2012-08-04T16:00:00Z",
// Trimmed to just 2 points
"cartesian" : [0.0, -2379754.6637012, -4665332.88013588, 3628133.68924173,
3894.996219574019, -2291336.52323822, -4682359.21232197, 3662718.52171165]
}
Run Code Online (Sandbox Code Playgroud)
如果是两点,为什么有8个值?如果是ECEF坐标,我预计每点只有三个......
例如,当我尝试这个时,我在控制台中收到了一条"未被捕获的错误"消息...这不是很有用:
"cartographic" : [-1.472853549, 0.589580778, 1000,
-1.472962668, 0.589739552, 1000 ]
Run Code Online (Sandbox Code Playgroud)
根据文档,制图采用(长,纬,高)长,纬度为弧度,高度为米.
我必须使用轮廓图来生成一组不方便定义的双曲函数的图。这项工作有效,并且绘制了其中的一系列噪声,并添加了一些噪声(对于熟悉此类事情的人来说,这是无源RF地理位置TDOA问题)。
由于我的python程序知道目标的(x,y),因此我想对围绕该点绘制的所有不同双曲线进行采样,并生成一个误差椭圆。如果我可以得到Matplotlib轮廓函数以返回绘制时每条轮廓线的点,那么我可以处理其余的计算。所以...
Matplotlib轮廓函数能否返回特定轮廓线的所有(x,y)值,例如f(x,y)= 0?