精华内容
下载资源
问答
  • 今天小编就为大家分享一篇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]

    aD = np.abs(D)

    return ends[0] + (np.outer(np.arange(aD + 1), d) + (aD>>1)) // aD

    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')

    程序运行结果:

    df90c3fe814d98339a3fc59ac4fb6286.png

    扩展资料:

    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输入两点坐标得到象限

    千次阅读 2020-10-19 13:35:40
    给女朋友写的所以有点腻 不过基本的思想在那里啦 初学者还是很容易学会的! 给????啦

    给女朋友写的
    给女朋友写的所以有点腻
    不过基本的思想在那里啦
    初学者还是很容易学会的!
    给个👍啦

    #崽崽最爱的宝贝我又来了,现在我来给崽崽演示一下如何才能输入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 ...
  • python计算两个坐标点之间的距离

    千次阅读 2020-08-26 17:19:17
    类似的需求应该比较多,这里的核心点是关于两个坐标点之间距离的计算,之前没用过这个东西,刚好今天有个这样的需求,记录下。 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已知两坐标求距离?

    千次阅读 2021-02-04 05:05:20
    刚开始接触python的时候,有些内容,就感觉自己好像是在学习电脑端的数学知识,比如接下来经常会碰到的问题,使用python两坐标距离,一起来看下吧~语法:#-*-coding:utf-8-*-importmath以下的类是得到一个点class...
  • 根据工作需要,将多个坐标点的中心点找出,在stackoverflow中发现了一个解决方法,也有人提供了Python版本,但运行之后的结果却是几个带负号的小于1的小数,再观察其他版本的例子时发现需要将经纬度进行转化,将角度...
  • python坐标表示的方法

    千次阅读 2020-12-15 16:35:43
    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手段,进行图片矫正,必须提供四顶点坐标,才能完全正确矫正图片的旋转和倾斜。
  • Python 代码计算2个坐标之间的距离

    万次阅读 2019-07-23 20:59:50
    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();...
  • python绘制已知坐标的直线

    万次阅读 2018-02-11 18:28:40
    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, ...
  • Python绘制主次坐标

    千次阅读 2021-03-06 20:46:10
    摘要这一篇文章来讲一下主次坐标的绘制。...这种图可以适用于当你有两组数组,两组数据的数量级相差较大(如果用同一y轴进行绘制,数据较小的会看不出趋势),但是想要比较两组数据的趋势。这种时候使用主次坐...
  • 输入三角形三顶点的坐标,计算三角形的面积 代码: # 输入三角形三顶点的坐标,计算三角形的面积 import math class Trangle: #定义三个点的类属性 def Point1(self, x1, y1): self.x1 = x1 self.y1 = y1 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,118
精华内容 17,247
关键字:

python输入两个点的坐标

python 订阅
友情链接: Angels_A_Z.rar