存在具有顶点坐标列表的折线= [(x1,y1),(x2,y2),(x3,y3),...]和点(x,y).在Shapely中,geometry1.distance(geometry2)返回两个几何之间的最短距离.
>>> from shapely.geometry import LineString, Point
>>> line = LineString([(0, 0), (5, 7), (12, 6)]) # geometry2
>>> list(line.coords)
[(0.0, 0.0), (5.0, 7.0), (12.0, 6.0)]
>>> p = Point(4,8) # geometry1
>>> list(p.coords)
[(4.0, 8.0)]
>>> p.distance(line)
1.4142135623730951
Run Code Online (Sandbox Code Playgroud)
但我还需要找到最接近点(x,y)的线上的点的坐标.在上面的示例中,这是LineString对象上距离Point(4,8)1.4142135623730951单位的点的坐标.方法distance()在计算距离时应该有坐标.有没有办法让它从这个方法返回?
四叉树和kd树之间的主要区别是什么?我知道他们在很多方面分裂了点,但我不明白为什么我们会使用一个而不是另一个.我需要一个允许我计算给定区域中有多少点(2D点)的结构.基本上,我试图检测点集群.
这只是另一篇文章pytz.
有两个函数可以在两个时区之间转换日期时间对象.第二个功能适用于所有情况.第一个函数在两种情况下失败,(3)和(4).类似的SO帖子没有这样的问题.任何解释基础上的区别localize(datetime.datetime)和replace(tzinfo)将是一个很大的帮助.
>>> from dateutil.parser import parse
>>> import pytz
Run Code Online (Sandbox Code Playgroud)
以下功能使用datetime.datetime.replace(tzinfo).
def buggy_timezone_converter(input_dt, current_tz='UTC', target_tz='US/Eastern'):
'''input_dt is a datetime.datetime object'''
current_tz = pytz.timezone(current_tz)
target_tz = pytz.timezone(target_tz)
target_dt = input_dt.replace(tzinfo=current_tz).astimezone(target_tz)
return target_tz.normalize(target_dt)
Run Code Online (Sandbox Code Playgroud)
现在注意四个日期时间转换.
(1)从UTC到EST - 好的
>>> buggy_timezone_converter(parse('2013-02-26T04:00:00'))
Out[608]: datetime.datetime(2013, 2, 25, 23, 0, tzinfo=<DstTzInfo 'US/Eastern' EST-1 day, 19:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)
(2)从UTC到EDT - 好的
>>> buggy_timezone_converter(parse('2013-05-26T04:00:00'))
Out[609]: datetime.datetime(2013, 5, 26, 0, 0, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)
Run Code Online (Sandbox Code Playgroud)
(3)从EST到UTC - 不行.时间偏移是4小时56分钟.它应该是5个小时 …
有一个具有N个节点和M个边的图G(e,v)。它的距离矩阵D是一个NxN矩阵。
现在让我们想象一下该图的另一种表示形式G'(e'=v,v'=e),即G'中的节点v'实际上是图G中的边,保持了连通性不变。现在其距离矩阵D'为MxM。
NetworkX中是否已经存在从D(NxN)获取D'(MxM)的任何方法?
尝试使用 Python 列出远程 MS SQL 服务器上的数据库名称(就像 MS SQL Server Management Studio 中的对象资源管理器一样)。
目前的解决方案: 所需的查询是SELECT name FROM sys.databases;. 所以当前的解决方案是使用 SQLAlchemy 和 Pandas,其工作原理如下。
import pandas
from sqlalchemy import create_engine
#database='master'
engine = create_engine('mssql+pymssql://user:password@server:port/master')
query = "select name FROM sys.databases;"
data = pandas.read_sql(query, engine)
Run Code Online (Sandbox Code Playgroud)
输出:
name
0 master
1 tempdb
2 model
3 msdb
Run Code Online (Sandbox Code Playgroud)
问题:如何使用SQLAlchemy列出服务器上的数据库名称,inspect(engine)类似于列出数据库下的表名称?或者有什么更简单的方法而不需要导入 Pandas?
from sqlalchemy import inspect
#trial 1: with no database name
engine = create_engine('mssql+pymssql://user:password@server:port')
#this engine not have DB name
inspector = …Run Code Online (Sandbox Code Playgroud)