• 今天小编就为大家分享一篇python绘制已知坐标的直线实例，具有很好的参考价值，希望对大家有所帮助。一起跟随小编过来看看吧
• 今天小编就为大家分享一篇python计算两个地址之间的距离方法，具有很好的参考价值，希望对大家有所帮助。一起跟随小编过来看看吧
• So I have a shapely LineString:print np.round(shapely_intersecting_lines.coords).astype(np.int)>>> array([[ 1520, -1140],[ 1412, -973]])This can be interpreted as a numpy array as well as se....


So I have a shapely LineString:
print np.round(shapely_intersecting_lines.coords).astype(np.int)
>>> array([[ 1520, -1140],
[ 1412, -973]])
This can be interpreted as a numpy array as well as seen above.
I want to get all the points in between, that is I want to get the points of the line in between as integer values. The output should be something like this:
array([[ 1520, -1140],
[ 1519, -1139],
[ 1519, -1138],
...,
[ 1413, -975],
[ 1412, -974],
[ 1412, -973]], dtype=int32)
I posted this earlier in gis.stackexchange hoping there was a solution in shapely that was efficient. The solution was good at first, however, the solution is now too slow as I run this over 50000 times in my code. On my computer each loop takes about 0.03s resulting in over a day of running. It is too slow for what I need here and was hoping to see if anyone knows of a vectorized solution to this.
解决方案
Bresenham may be smart but I'm pretty sure brute force vectorization is faster. I've written two variants - the first is easier to read, the second is faster (80 us vs 50 us).
Update Fixed a bug (thanks @Varlor) and added an nd variant.
import numpy as np
from timeit import timeit
def connect(ends):
d0, d1 = np.abs(np.diff(ends, axis=0))[0]
if d0 > d1:
return np.c_[np.linspace(ends[0, 0], ends[1, 0], d0+1, dtype=np.int32),
np.round(np.linspace(ends[0, 1], ends[1, 1], d0+1))
.astype(np.int32)]
else:
return np.c_[np.round(np.linspace(ends[0, 0], ends[1, 0], d1+1))
.astype(np.int32),
np.linspace(ends[0, 1], ends[1, 1], d1+1, dtype=np.int32)]
def connect2(ends):
d0, d1 = np.diff(ends, axis=0)[0]
if np.abs(d0) > np.abs(d1):
return np.c_[np.arange(ends[0, 0], ends[1,0] + np.sign(d0), np.sign(d0), dtype=np.int32),
np.arange(ends[0, 1] * np.abs(d0) + np.abs(d0)//2,
ends[0, 1] * np.abs(d0) + np.abs(d0)//2 + (np.abs(d0)+1) * d1, d1, dtype=np.int32) // np.abs(d0)]
else:
return np.c_[np.arange(ends[0, 0] * np.abs(d1) + np.abs(d1)//2,
ends[0, 0] * np.abs(d1) + np.abs(d1)//2 + (np.abs(d1)+1) * d0, d0, dtype=np.int32) // np.abs(d1),
np.arange(ends[0, 1], ends[1,1] + np.sign(d1), np.sign(d1), dtype=np.int32)]
def connect_nd(ends):
d = np.diff(ends, axis=0)[0]
j = np.argmax(np.abs(d))
D = d[j]
ends = np.array([[ 1520, -1140],
[ 1412, -73]])
ends_4d = np.array([[ 100, -302, 101, -49],
[ -100, -45, 112, 100]])
print(connect(ends))
print(connect_nd(ends_4d))
assert np.all(connect(ends)==connect2(ends))
assert np.all(connect(ends)==connect_nd(ends))
assert np.all(connect(ends)==connect(ends[:, ::-1])[:, ::-1])
assert np.all(connect(ends)==connect(ends[::-1])[::-1])
print(timeit('f(ends)', globals={'f': connect, 'ends': ends}, number=10000)*100, 'us')
print(timeit('f(ends)', globals={'f': connect2, 'ends': ends}, number=10000)*100, 'us')
print(timeit('f(ends)', globals={'f': connect_nd, 'ends': ends}, number=10000)*100, 'us')
Sample output:
[[ 1520 -1140]
[ 1520 -1139]
[ 1520 -1138]
...,
[ 1412 -75]
[ 1412 -74]
[ 1412 -73]]
[[ 100 -302 101 -49]
[ 99 -301 101 -48]
[ 98 -300 101 -48]
...,
[ -98 -47 112 99]
[ -99 -46 112 99]
[-100 -45 112 100]]
78.8237597000034 us
48.02509490000375 us
62.78072760001123 us

展开全文
• 欧式距离python实现代码：import numpy as npx=np.random.random(10)y=np.random.random(10)#方法一：根据公式求解d1=np.sqrt(np.sum(np.square(x-y)))#方法二：根据scipy库求解from scipy.spatial.distance import ...

欧式距离python实现代码：
import numpy as np
x=np.random.random(10)
y=np.random.random(10)
#方法一：根据公式求解
d1=np.sqrt(np.sum(np.square(x-y)))
#方法二：根据scipy库求解
from scipy.spatial.distance import pdist
X=np.vstack([x,y])
d2=pdist(X)
曼哈顿距离python实现：
import numpy as np
x=np.random.random(10)
y=np.random.random(10)
#方法一：根据公式求解
d1=np.sum(np.abs(x-y))
#方法二：根据scipy库求解
from scipy.spatial.distance import pdist
X=np.vstack([x,y])
d2=pdist(X,'cityblock')
程序运行结果：

扩展资料：
C语言实现：
#include "pch.h"
#define  _CRT_SECURE_NO_WARNINGS
#include
#include
void main()
{
float x1, x2, y1, y2;
printf("请输入一组数据：");
while (~scanf("%f%f%f%f", &x1, &y1, &x2, &y2))//开始读取输入的数，知道文件结束。
{
printf("两点间的距离为：%.2f\n", sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)));
printf("请输入一组数据：");
}
}

展开全文
• 欧式距离python实现代码：import numpy as npx=np.random.random(10)y=np.random.random(10)#方法一：根据公式求解d1=np.sqrt(np.sum(np.square(x-y)))#方法二：根据scipy库求解from scipy.spatial.distance import ...

欧式距离python实现代码：
import numpy as np
x=np.random.random(10)
y=np.random.random(10)
#方法一：根据公式求解
d1=np.sqrt(np.sum(np.square(x-y)))
#方法二：根据scipy库求解
from scipy.spatial.distance import pdist
X=np.vstack([x,y])
d2=pdist(X)
曼哈顿距离python实现：
import numpy as np
x=np.random.random(10)
y=np.random.random(10)
#方法一：根据公式求解
d1=np.sum(np.abs(x-y))
#方法二：根据scipy库求解
from scipy.spatial.distance import pdist
X=np.vstack([x,y])
d2=pdist(X,'cityblock')
程序运行结果：

扩展资料：
C语言实现：
#include "pch.h"
#define  _CRT_SECURE_NO_WARNINGS
#include
#include
void main()
{
float x1, x2, y1, y2;
printf("请输入一组数据：");
while (~scanf("%f%f%f%f", &x1, &y1, &x2, &y2))//开始读取输入的数，知道文件结束。
{
printf("两点间的距离为：%.2f\n", sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)));
printf("请输入一组数据：");
}
}

展开全文
• 给女朋友写的所以有点腻 不过基本的思想在那里啦 初学者还是很容易学会的！ 给????啦
 给女朋友写的所以有点腻 不过基本的思想在那里啦 初学者还是很容易学会的！ 给个👍啦
#崽崽最爱的宝贝我又来了，现在我来给崽崽演示一下如何才能输入x,y得出象限啦
#我们得考虑坐标轴啦
x=float(input("宝贝横坐标啦:"))
y=float(input("宝贝纵坐标呢:"))
if(x>0)and(y>0):
print("第一象限哦")
elif(x==0)and(y!=0):
print("笨比，在y轴上啦")
elif(x<0)and(y>0):
print("第二象限哦")
elif(y==0)and(x!=0):
print("笨比，在y轴上啦")
elif(x<0)and(y<0):
print("第三象限哦")
elif(x>0)and(y<0):
print("第四象限哦")
else:
print("当然原点啦！")

展开全文
• #coding:UTF-8"""Python implementation of Haversine formulaCopyright(C)<2009>Bartek GórnyThis program is free software:you can redistribute it and/or modifyit under the terms of the GNU General ...
• 类似的需求应该比较多，这里的核心点是关于两个坐标点之间距离的计算，之前没用过这个东西，刚好今天有个这样的需求，记录下。 import requests import psycopg2 import pandas as pd from math import radians, ...
• 小编今天教你们python怎么导入坐标点，解决你在生活中遇到的小问题。 首先下载安装python，打开文本编辑器，将文件保存成 py格式，如果python目录不在usr/bin目录下，则替换成当前python执行程序的目录。 编写完...
• 存在具有顶点坐标列表的折线= [(x1...在Shapely中,geometry1.distance(geometry2)返回两个几何之间的最短距离.>>> from shapely.geometry import LineString, Point>>> line = LineString([(0, 0)...
• 刚开始接触python的时候，有些内容，就感觉自己好像是在学习电脑端的数学知识，比如接下来经常会碰到的问题，使用python两坐标距离，一起来看下吧~语法：#-*-coding:utf-8-*-importmath以下的类是得到一个点class...
• 根据工作需要，将多个坐标点的中心点找出，在stackoverflow中发现了一个解决方法，也有人提供了Python版本，但运行之后的结果却是几个带负号的小于1的小数，再观察其他版本的例子时发现需要将经纬度进行转化，将角度...
• python坐标怎么表示python利用元组、字典可以表示坐标增减，具体做法为：def change_directions(e): #e表示移动方向,list类型moves = { "up":(0,1),"down":(0,-1),"right":(1,0),"left":(-1,0)}x,y = (0,0)if e:...
• python语言，对输入的图片通过opencv手段，进行图片矫正，必须提供四顶点坐标，才能完全正确矫正图片的旋转和倾斜。
• import math ...ipt = input('请输入x1,y1,x2,y2，以逗号隔开:') data = ipt.split(',') data = [int(x) for x in data] result = math.sqrt( math.pow( data[0] - data[2], 2) + math.pow( ...
• 已知直线上两个端点坐标，求任意等分点坐标，用什么方法或模块能实现?
• 输入两点坐标（X1,Y1）,（X2,Y2）,计算并输出两间的距离 按照我的想法是这样的，但是，不好的事情发生了… #include&lt;stdio.h&gt; #include&lt;math.h&gt; int main(){ double x1,x2,y1,y2; ...
• win = GraphWin("Click", 800, 300)#后面两个值为窗体的长和宽 for i in range(5): p[i] = win.getMouse() p[i].draw(win) polygon = Polygon(p[0], p[1], p[2], p[3], p[4]) polygon.setFill("peachpuff") ...
• 所以我试图创建一函数，让用户输入矩形的长度和宽度，然后用python在图形中心（使用图形模块）绘制矩形。所以我想知道如何添加坐标，因为我收到错误消息。这是我到目前为止有：如何在Python中添加坐标？def ...
• #某条线 list(zip(x,y))为线上的坐标点的list line = SG.LineString(list(zip(x,y))) #(1,0)到(1,100)点的连线 yline = SG.LineString([(1, 0), (1, 100)]) #or (0,1)到(100,1)点的连线 xline = SG.LineString...
• 代码如下：import java.util.Scanner;class Demo5 { public static void main(String[] args)  { Scanner sc=new Scanner(System....请输入第一个点坐标"); int x1=sc.nextInt(); int y1=sc.nextInt();...
• import matplotlib.pyplot as plt import numpy as np x = [11422,11360,11312,11274,11233,11196,11160,11129,11098,11038, 10984,10944,10903,10863,10828,10789,10752,10715,10675,10639, ...
• 摘要这一篇文章来讲一下主次坐标的绘制。...这种图可以适用于当你有两组数组，两组数据的数量级相差较大(如果用同一y轴进行绘制，数据较小的会看不出趋势)，但是想要比较两组数据的趋势。这种时候使用主次坐...
• 输入三角形三顶点的坐标，计算三角形的面积 代码： # 输入三角形三顶点的坐标，计算三角形的面积 import math class Trangle: #定义三个点的类属性 def Point1(self, x1, y1): self.x1 = x1 self.y1 = y1 ...

...

python 订阅