from functools import cmp_to_key
from shapely import from_wkt
from shapely.geometry import LineString
# 定義車道線(假設(shè)為 LineString 對(duì)象)
lines_dict = {
"4": "LINESTRING Z(116.222517 40.147647 0, 116.222515 40.147649 0, 116.222455 40.147705 0, 116.222418 40.147741 0, 116.222252 40.1479 0)",
"3": "LINESTRING Z(116.222472 40.14762 0, 116.222375 40.147716 0, 116.22227 40.14782 0, 116.222212 40.147877 0)",
"-1": "LINESTRING Z(116.22238 40.147565 0, 116.222283 40.147661 0, 116.222121 40.147823 0)",
"2": "LINESTRING Z(116.222436 40.147599 0, 116.222339 40.147694 0, 116.222177 40.147856 0)",
"1": "LINESTRING Z(116.222401 40.147577 0, 116.222304 40.147674 0, 116.222141 40.147835 0)",
"5": "LINESTRING Z(116.222558 40.147672 0, 116.222398 40.147818 0, 116.222287 40.147922 0)"
}
def cross_product(vec1, vec2):
return vec1[0] * vec2[1] - vec1[1] * vec2[0]
def cross_sort(item1, item2):
line1, line2 = item1[1], item2[1]
line1_coords = line1.coords
line2_coords = line2.coords
start1, end1 = line1_coords[0], line1_coords[-1]
start2, end2 = line2_coords[0], line2_coords[-1]
vector1 = (end1[0] - start1[0], end1[1] - start1[1])
vector2_start = (start2[0] - start1[0], start2[1] - start1[1])
vector2_end = (end2[0] - start1[0], end2[1] - start1[1])
cross_start = vector1[0] * vector2_start[1] - vector1[1] * vector2_start[0]
cross_end = vector1[0] * vector2_end[1] - vector1[1] * vector2_end[0]
# # 判斷位置關(guān)系
# if cross_start > 0 and cross_end > 0:
# return "left"
# elif cross_start < 0 and cross_end < 0:
# return "right"
# elif cross_start == 0 and cross_end == 0:
# return "collinear"
# else:
# return "intersecting or mixed"
if cross_start > 0 and cross_end > 0:
return 1
elif cross_start < 0 and cross_end < 0:
return -1
def lines_sorted(lines_dict):
if lines_dict and len(lines_dict) > 1:
sorted_items = sorted(lines_dict.items(), key=cmp_to_key(cross_sort))
for sorted_item in sorted_items:
print(sorted_item)
if __name__ == '__main__':
d = {}
for k, v in lines_dict.items():
d[k] = from_wkt(v)
print(d)
lines_sorted(d)
lines_sorted
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來良姆,“玉大人肠虽,你說我怎么就攤上這事÷曜罚” “怎么了税课?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)痊剖。 經(jīng)常有香客問我韩玩,道長(zhǎng),這世上最難降的妖魔是什么邢笙? 我笑而不...
- 正文 為了忘掉前任啸如,我火速辦了婚禮,結(jié)果婚禮上氮惯,老公的妹妹穿的比我還像新娘。我一直安慰自己想暗,他們只是感情好妇汗,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著说莫,像睡著了一般杨箭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上储狭,一...
- 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了壮锻?” 一聲冷哼從身側(cè)響起琐旁,我...
- 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎猜绣,沒想到半個(gè)月后灰殴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡掰邢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年牺陶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尸变。...
- 正文 年R本政府宣布奏夫,位于F島的核電站怕篷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏酗昼。R本人自食惡果不足惜廊谓,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望麻削。 院中可真熱鬧蒸痹,春花似錦、人聲如沸呛哟。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽扫责。三九已至榛鼎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鳖孤,已是汗流浹背者娱。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像腿准,于是被迫代替她去往敵國(guó)和親际起。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拾碌,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 最近項(xiàng)目組想推增量測(cè)試覆蓋度統(tǒng)計(jì),讓我先行調(diào)研相關(guān)工具街望。后來在github 上找到這個(gè)diff_cover工具校翔,基...
- *About Passion *About Product *About Team Design comes fi...
- 項(xiàng)目背景 最近在做“夏亞名臺(tái)詞”系列的文章,因此搜集了不少數(shù)據(jù)灾前。在搜集數(shù)據(jù)的過程中發(fā)現(xiàn)防症,網(wǎng)上資源雖然非常豐富,但是...
- 版本記錄 前言 quartz是一個(gè)通用的術(shù)語哎甲,用于描述在iOS和MAC OS X 中整個(gè)媒體層用到的多種技術(shù) 包括...
- Come on, you're dying! 拜托 你要死了 You have to return to your...