Python 一些重要函数方法整理

geopandas

def gcj02_to_wgs84(lng, lat):
    """
    GCJ02(火星坐标系)转GPS84
    :param lng:火星坐标系的经度
    :param lat:火星坐标系纬度
    :return:
    """
    pi = 3.1415926535897932384626  # π
    x_pi = 3.14159265358979324 * 3000.0 / 180.0
    a = 6378245.0  # 长半轴
    ee = 0.00669342162296594323
    if out_of_china(lng, lat):
        return [lng, lat]
    dlat = _transformlat(lng - 105.0, lat - 35.0)
    dlng = _transformlng(lng - 105.0, lat - 35.0)
    radlat = lat / 180.0 * pi
    magic = math.sin(radlat)
    magic = 1 - ee * magic * magic
    sqrtmagic = math.sqrt(magic)
    dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi)
    dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi)
    mglat = lat + dlat
    mglng = lng + dlng
    return lng * 2 - mglng, lat * 2 - mglat
def project_circum_polygon(project_lng,project_lat,km):
    '''
    根据坐标和半径获得轮廓
    '''
    project_lng_wsg,project_lat_wsg=gcj02_to_wgs84(project_lng,project_lat)[0],ts.gcj02_to_wgs84(project_lng,project_lat)[1]
    #定义投影转换器
    transformer=Transformer.from_crs('epsg:4326','epsg:32650',always_xy=True)
    projected_center=transformer.transform(project_lng_wsg,project_lat_wsg)
    #创建polygon对象
    center=Point(projected_center)
    #计算轮廓
    radius=km*1000
    circle_projected=center.buffer(radius)
    #转回WGS坐标系
    circle=gpd.GeoSeries(circle_projected,crs='epsg:32650').to_crs('epsg:4326')
    gdf=gpd.GeoDataFrame(geometry=circle)
    #转回GCJ坐标,假的WGS
    circle1=ts.create_polygon_gcj(calculate_wkt_clean(circle.iloc[0]))
    gdf1=gpd.GeoDataFrame(geometry=gpd.GeoSeries(circle1),crs='EPSG:4326')
    return gdf,gdf1



def dianping_data_sjoin(engine4,city_id,reachable):
    '''
    获得区域内点评数据
    '''
    print(f'读取该区域{city_id}城市的大众点评数据')
    dianping_data_sql = "select a.*,b.ws_cityid,b.gcj_lat,b.gcj_lng from dianping_shop_2023_clean a left join dianping_shop_2023 b on a.shopuuid=b.shopuuid where b.ws_cityid = {} and b.closed=0".format(city_id)
    dianping_data=pd.read_sql(dianping_data_sql,con=engine4)
    dianping_data=dianping_data.rename(columns={'backCategoryName':'categoryName','final_ws_brandid':'brand_id'})
    dianping_data_gpd=gpd.GeoDataFrame(dianping_data,geometry=[Point(xy) for xy in zip(dianping_data['gcj_lng'],dianping_data['gcj_lat'])])
    dianping_in_circle = gpd.sjoin(dianping_data_gpd, reachable, op='within')
    assert not dianping_in_circle.empty, "No data found within the reachable area"
    return dianping_in_circle

读取远程共享地址

from smb.SMBConnection import SMBConnection

# 设置共享信息
server_ip = '192.168.2.123'  # 替换为服务器 IP 地址
shared_folder = 'zhongtai-python-data'  # 替换为共享文件夹名称
username = 'zhongtai'  # 替换为有效的用户名
password = '[Ps)f(Nhc4bRo#8d%5J0Mw4bW0Anm5'  # 替换为有效的密码
client_name = 'client_name'  # 你的客户端名称,可以是任意字符串
domain_name = ''  # 如果不需要域名,可以留空

# 创建 SMB 连接
conn = SMBConnection(username, password, client_name, server_ip, domain=domain_name, use_ntlm_v2=True)
try:
    # 连接到服务器
    conn.connect(server_ip, 445)  # 445 是常用的 SMB 端口
    print("连接成功!")

    # 列出共享文件夹中的文件
    files = conn.listPath(shared_folder, '')  # 读取共享根目录
    print("共享文件夹中的文件:")
    for file in files:
        print(f"- {file.filename}")

    # 如果您想读取特定文件,可以使用如下方法
    # file_name = 'example.txt'  # 替换为您想读取的文件名
    # with open('local_file.txt', 'wb') as local_file:  # 在本地保存的文件名
    #     conn.retrieveFile(shared_folder, file_name, local_file)
except Exception as e:
    print(f"连接或读取文件时出错: {e}")
或者直接用path读取
import os
path=r"\\192.168.2.123\zhongtai-python-data"
files = os.listdir(path)
for file in files:
    print(file)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值