青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

socketref,再見!高德

https://github.com/adoggie

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用鏈接

留言簿(54)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

#



  1 # -- coding:utf-8 --
  2 
  3 import socket,traceback,os,os.path,sys,time,struct,base64,gzip,array,json,zlib
  4 
  5 '''
  6 ------------------
  7 msghdr
  8 cmdtxt
  9 \0\0
 10 二進(jìn)制流
 11 -----------------
 12 視頻包由三部分構(gòu)成: MetaMessage數(shù)據(jù)元封套,控制命令文本(json格式),二進(jìn)制數(shù)據(jù),后兩者之間采用連續(xù)兩個(gè)\0區(qū)分,表示開始二進(jìn)制流數(shù)據(jù)
 13 [metamsg,cmdtxt,bindata]
 14 bindata部分格式、編碼由cmdtxt控制
 15 
 16 # [magic,size,compress,encrypt,version],[command text(json)],[\0\0],[binary data..]
 17 '''
 18 
 19 COMPRESS_NONE = 0
 20 COMPRESS_ZLIB = 1
 21 COMPRESS_BZIP2 = 2
 22 
 23 ENCRYPT_NONE = 0
 24 ENCRYPT_MD5  = 1
 25 ENCRYPT_DES  = 2
 26 
 27 
 28 class MessageBase:
 29     def __init__(self,type='',bin=None):
 30         #self.type = type
 31         self.attrs={'msg':type}
 32         self.bin = bin
 33     
 34     def getMsg(self):
 35         return self.getValue('msg')
 36         
 37     def getValue(self,key):
 38         if self.attrs.has_key(key):
 39             return self.attrs[key]
 40         return None
 41     
 42     def getBinary(self):
 43         return self.bin
 44         
 45     def marshall(self):
 46         d = json.dumps(self.attrs)
 47         if self.bin:
 48             d+='\0\0'+ self.bin
 49         return d
 50     
 51     @classmethod
 52     def unmarshall(cls,d):
 53         m = None        
 54         sep = d.find('\0\0')
 55         txt = None
 56         bin = None
 57         if sep == -1:
 58             txt = d
 59         else:
 60             txt = d[:sep]
 61             bin = d[sep+2:]        
 62         m = MessageBase()
 63         try:
 64             m.attrs = json.loads(txt)
 65             if type(m.attrs) != type({}):
 66                 return None            
 67             m.bin = bin
 68         except:
 69             m = None
 70         return m
 71         
 72 class MsgCallReturn(MessageBase):
 73     def __init__(self,succ=True,errno=0 ,errmsg='',value=None,bin=None):
 74         MessageBase.__init__(self,'callret',bin)
 75         self.attrs['succ']=succ
 76         self.attrs['errno']=errno
 77         self.attrs['errmsg']=errmsg
 78         self.attrs['value']=value
 79         
 80 class NetMetaPacket:
 81     # [magic,size,compress,encrypt,version],[command text(json)],[\0\0],[binary data..]
 82     def __init__(self,msg=None,compress=COMPRESS_NONE,encrypt = ENCRYPT_NONE ):
 83         self.msg = msg
 84         self.size4 = 0
 85         self.compress1 = compress
 86         self.encrypt1 = encrypt
 87         self.ver4 = 0x01000000 # means 1.0.0.0
 88     magic4=0xEFD2BB99
 89     
 90     @classmethod
 91     def minSize(cls):
 92         return 14
 93         
 94     def marshall(self):
 95         d = self.msg.marshall()
 96         if self.compress1 == COMPRESS_ZLIB:
 97             d = zlib.compress(d)
 98         else:
 99             self.compress1 = COMPRESS_NONE
100         self.encrypt1 = ENCRYPT_NONE 
101         # [magic,size,compress,encrypt,version],[command text(json)],[\0\0],[binary data..]
102         r = struct.pack('!BBI',self.compress1,self.encrypt1,self.ver4)
103         r+= d
104         self.size4 = len(r)+4
105         r = struct.pack('!II', self.magic4,self.size4) + r
106         # size =包含自身變量的整個(gè)包大小
107         return r
108 
109         
110         
111 if __name__=='__main__':
112     
113     print NetMetaPacket(msg=MsgCallReturn(value=range(10),bin='abc' ),compress=COMPRESS_NONE).marshall()
114     print NetMetaPacket.minSize()
115    
posted @ 2012-03-08 23:14 放屁阿狗 閱讀(484) | 評(píng)論 (0)編輯 收藏

     摘要: 耗時(shí)1天,根據(jù)公司應(yīng)用需求,開發(fā)一種簡(jiǎn)易的基礎(chǔ)的通信框架,簡(jiǎn)化系統(tǒng)其它模塊在網(wǎng)絡(luò)通信工作方面的復(fù)雜度簡(jiǎn)單測(cè)試network.py service 做服務(wù)器,network.py client做客戶端,傳送多個(gè)消息報(bào)文,且能響應(yīng)sock連接和斷開狀態(tài)考慮到性能和實(shí)際項(xiàng)目對(duì)線程需求,故都采用單連接單線程模式,預(yù)留select多路復(fù)用接口,可見: service.selectIn()Code highl...  閱讀全文
posted @ 2012-03-08 23:12 放屁阿狗 閱讀(2139) | 評(píng)論 (0)編輯 收藏

     摘要: 與ks108同一個(gè)項(xiàng)目,ks102為編寫手持gps模塊,個(gè)人、寵物使用Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1 # -- coding:utf-8 --  2...  閱讀全文
posted @ 2012-03-08 15:23 放屁阿狗 閱讀(852) | 評(píng)論 (0)編輯 收藏

     摘要: ks108 Gps定位模塊接入服務(wù)中心,解碼類:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1 # -- coding:utf-8 --  2 #解碼器定...  閱讀全文
posted @ 2012-03-08 15:20 放屁阿狗 閱讀(685) | 評(píng)論 (0)編輯 收藏


OGR1.6 above
python2.4 above

只需要定義fields,roads數(shù)據(jù)調(diào)用serial_shpdata_road()即可一次輸出到shp文件
不適合大批量坐標(biāo)一次生成shp
ogr的問題在于python代碼中初始化layer之后傳遞到其他函數(shù)使用將會(huì)導(dǎo)致莫名錯(cuò)誤,應(yīng)該是個(gè)bug

 1    #bin.zhang@sw2us.com
 2     fields=[
 3         {'name':'roadname','type':FIELD_STRING,'width':30}
 4     ]
 5     roads=[
 6         {
 7             'geom':[(121.1,31.1),(121.101,31.102),(121.101,31.2)],
 8             'attrs':('xscott.test',)
 9         }
10     ]
11     serial_shpdata_road('d:/temp3/aa.shp',fields,roads)
12 '''
13 def serial_shpdata_road(file,fields,roads):
14     '''
15         fields: [{name,type,width},]
16         roads - [{'geom':[(x,y),..],'wkt':'','attrs':[name,type,len,]},..]
17     '''
18     layer = None
19     
20     if os.path.exists(file):
21         os.remove(file)
22         
23     makePrjFile(file)
24     ds = driver.CreateDataSource(file)
25     layer = ds.CreateLayer("road",geom_type=ogr.wkbMultiLineString)
26     for f in fields:
27         fld = ogr.FieldDefn(f['name'],f['type'])
28         
29         if f['type'] == FIELD_STRING :
30             w = 30
31             if f.has_key('width'):
32                 w = f['width']
33             fld.SetWidth(w)
34         layer.CreateField(fld)
35     ftrdfn = layer.GetLayerDefn()
36     
37     for r in roads:
38         g = None
39         if r.has_key('wkt'):
40             g = ogr.CreateGeometryFromWkt(r['wkt'])
41         if r.has_key('geom'):
42             pts = r['geom']
43             pts = map(lambda pt: '%s %s'%(pt[0],pt[1]),pts)
44             txt = string.join(pts,',')
45             wkt = "MULTILINESTRING((%s))"%txt
46             g = ogr.CreateGeometryFromWkt(wkt)
47         
48         ftr = ogr.Feature(ftrdfn)
49         ftr.SetGeometry(g)
50         for n in range(len(r['attrs'])):
51             at = r['attrs'][n]
52             ftr.SetField(n,at)
53         layer.CreateFeature(ftr)
54     layer.SyncToDisk()
55    
posted @ 2012-03-02 01:04 放屁阿狗 閱讀(1514) | 評(píng)論 (1)編輯 收藏

開發(fā)工作都想用python+qt來實(shí)現(xiàn)
手頭的項(xiàng)目涉及不同部門的成果,還要與公司產(chǎn)品做無縫接入,必然要用到ctypes,qt,com之類的東西了
數(shù)據(jù)編碼采用json或者xml
以com方式提供生產(chǎn)系統(tǒng)訪問接口,直覺告訴我實(shí)現(xiàn)會(huì)有點(diǎn)問題,那就是python+Qt做com組件,這個(gè)組件與影像系統(tǒng)通信,
com組件訪問顯示qt的ui界面會(huì)存在問題,沒有做過嘗試,不知是否能行
Com方式提供服務(wù)采用獨(dú)立服務(wù)器模式還是獨(dú)立的組件模式(其實(shí)是個(gè)線程模型問題,獨(dú)立進(jìn)程的com server還是加載到應(yīng)用app進(jìn)程的com object)

花點(diǎn)時(shí)間琢磨去........
posted @ 2012-03-01 10:24 放屁阿狗 閱讀(503) | 評(píng)論 (0)編輯 收藏

在弄地圖路網(wǎng)接口時(shí),北京提供的是c的實(shí)現(xiàn)版本,本就知道ctypes可以直接調(diào)用外部dll,之前一直用swig進(jìn)行包裝給python使用,好久沒弄都忘了,再弄就嫌煩了,最簡(jiǎn)單就用ctypes吧
要用ctypes當(dāng)然要看文檔了,里面定義結(jié)構(gòu)必須自己手動(dòng)寫,POINTER,Structure之類的,好煩!
運(yùn)氣來了,無意之間找到個(gè)pyglet的項(xiàng)目里面有個(gè)tools/wrap.py的東西,還是個(gè)式樣性質(zhì)的東西,并沒有在他的發(fā)行代碼中,但可訪問他的svn可以獲取到,wrap.py輸入一個(gè).h的文件便可自動(dòng)生成對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),試了一下avcodec.h,立馬出來個(gè)avcodec.py,爽啊
posted @ 2012-03-01 10:16 放屁阿狗 閱讀(546) | 評(píng)論 (1)編輯 收藏

     摘要: ■Overview⌒概述■Runtime Classes⌒實(shí)時(shí)運(yùn)行類Attributes⌒屬性Enumerations⌒枚舉■Editor Classes⌒編輯器類Enumerations⌒枚舉■History⌒歷史■Index⌒總索引Clas...  閱讀全文
posted @ 2012-02-13 10:26 放屁阿狗 閱讀(3422) | 評(píng)論 (0)編輯 收藏

好久沒碰2d,3d的東西了,翻出個(gè)向量類,正好用于道路抽稀時(shí)根據(jù)轉(zhuǎn)角來剔除多余的中間節(jié)點(diǎn)

 1 import os,os.path,sys,time,copy,shutil,math
 2 from gameobjects.vector2 import Vector2
 3 
 4 a=(2,6)
 5 b= (1,2)
 6 c=(5,2.48)
 7 
 8 #計(jì)算ba與bc夾角 Labc
 9 def pp_distance(p1,p2):
10     return math.sqrt( (p1[0]-p2[0])**2+ (p1[1]-p2[1])**2)
11 
12 ba= Vector2.from_points(b,a)
13 bc = Vector2.from_points(b,c)
14 #點(diǎn)乘計(jì)算夾角
15 dot = (ba[0]*bc[0]+ba[1]*bc[1] )
16 =  dot/ (ba.get_magnitude()*bc.get_magnitude() )
17 angle =  (math.acos(x) / math.pi) * 180
18 print angle
19 
posted @ 2012-02-13 10:13 放屁阿狗 閱讀(695) | 評(píng)論 (0)編輯 收藏

公司的shp數(shù)據(jù)都是以秒為單位存儲(chǔ),要做監(jiān)控和道路匹配,直接與gps接收坐標(biāo)無法實(shí)現(xiàn),必須轉(zhuǎn)換shp單位為度單位

  1 #--coding:utf-8---
  2 #  brief:  內(nèi)業(yè)shp數(shù)據(jù),轉(zhuǎn)換秒到度為單位
  3 # author: scott
  4 # date: 2012.1.30    
  5 # org:  --navi.com
  6 # 
  7 # version: v0.1.0 2012.2.1
  8 #  1.create doc and test ok, types (included point|line|polygon|multipolygon) be supported
  9 # 
 10 
 11 import os,os.path,sys,time,copy,shutil
 12 from osgeo import ogr
 13 
 14 
 15 def do_layerPoint(layer):
 16     ftr = layer.ResetReading()
 17     ftr = layer.GetNextFeature()    
 18     print 'point num:',layer.GetFeatureCount()
 19     print 'extent:',layer.GetExtent()
 20     cc = 1
 21     while ftr:
 22         #print cc
 23         cc+=1
 24         pt = ftr.GetGeometryRef().GetPoint(0)
 25         g = ftr.GetGeometryRef()
 26         #print g#,g.ExportKML()
 27         if pt[0] >1000 or pt[1> 1000:
 28             g.SetPoint(0,pt[0]/3600.,pt[1]/3600.)
 29             #print g
 30             
 31             '''
 32             ng = ogr.Geometry(ogr.wkbPoint)
 33             print pt
 34             ng.SetPoint(0,pt[0]+40,pt[1])
 35             ftr.SetGeometry(ng)        
 36             '''
 37             layer.SetFeature(ftr)
 38         ftr = layer.GetNextFeature()    
 39 
 40 def do_layerLine(layer):
 41     ftr = layer.ResetReading()
 42     ftr = layer.GetNextFeature()
 43     
 44     while ftr:    
 45         g = ftr.GetGeometryRef()
 46         cnt = g.GetPointCount()
 47         cc = 0
 48         while cc < cnt:
 49             #print g.GetPoint(cc)
 50             cc+=1
 51         
 52         for n in range(cnt):
 53             pt = g.GetPoint(n)
 54             if pt[0]>1000 or pt[1> 1000:
 55                 g.SetPoint(n,pt[0]/3600.,pt[1]/3600.0)
 56         layer.SetFeature(ftr)
 57         
 58         ftr = layer.GetNextFeature()
 59 
 60 def do_layerPolygon(layer):
 61     ftr = layer.ResetReading()
 62     ftr = layer.GetNextFeature()
 63     
 64     while ftr:    
 65         g = ftr.GetGeometryRef()    
 66         cnt = g.GetGeometryCount()
 67         for n in range(cnt):
 68             gg = g.GetGeometryRef(n)
 69             for m in range(gg.GetPointCount() ):
 70                 pt = gg.GetPoint(m)
 71                 #print pt
 72                 if pt[0]>1000 or pt[1> 1000:
 73                     gg.SetPoint(m,pt[0]/3600.,pt[1]/3600.0)
 74         layer.SetFeature(ftr)
 75         ftr = layer.GetNextFeature()        
 76         
 77 def do_shpfile(file):
 78     #print file
 79     print 'ready file:',file
 80     driver = ogr.GetDriverByName('ESRI Shapefile')
 81     #shp = driver.Open('e:/shp_data/points.shp',1)  # 0 - read , 1 - write 
 82     shp = driver.Open(file,1)  # 0 - read , 1 - write 
 83     
 84     layer = shp.GetLayer()
 85     
 86     if layer.GetFeatureCount() == 0:
 87         return 
 88     
 89     gtyp = layer.GetLayerDefn().GetGeomType()
 90     
 91     if file.lower().find('province'== -1:
 92         pass #return 
 93         
 94     if gtyp == ogr.wkbPoint:
 95         do_layerPoint(layer)
 96     elif gtyp == ogr.wkbLineString:
 97         do_layerLine(layer)
 98     elif gtyp == ogr.wkbPolygon:
 99         do_layerPolygon(layer)
100     else:
101         print 'unknown type:',gtyp,'  ',file
102     
103     layer.SyncToDisk()    
104     shp.Destroy()
105     
106     
107 def convert(shpdir):
108     files = os.listdir(shpdir)
109     for file in files:
110         if  file.lower().find('.shp'==-1:
111             continue
112         
113         #if file == 'points.shp':
114         do_shpfile(shpdir+"/"+file)
115 
116 if __name__=='__main__':
117     #convert( 'e:/shp_data' )
118     if sys.argv[1:]:
119         convert(sys.argv[1])
120     else:
121         convert( 'D:/temp3/mess/MESH/H51F009012')
122    
posted @ 2012-02-02 02:14 放屁阿狗 閱讀(925) | 評(píng)論 (0)編輯 收藏

僅列出標(biāo)題
共25頁(yè): First 2 3 4 5 6 7 8 9 10 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            伊人色综合久久天天五月婷| 激情欧美一区二区三区在线观看| 国产精品自拍在线| 亚洲国产精品久久精品怡红院| 欧美色视频在线| 亚洲电影观看| 亚洲精品美女免费| 欧美黄色精品| 亚洲精品在线一区二区| 91久久久久久国产精品| 欧美成人一区在线| 欧美国产亚洲视频| 亚洲日本国产| 欧美日韩一区不卡| 亚洲一区二区三区成人在线视频精品 | 亚洲一区尤物| 亚洲女性裸体视频| 国产麻豆日韩欧美久久| 一本色道久久88精品综合| 亚洲一区欧美一区| 国产欧美一区二区三区久久人妖| 一本久久a久久精品亚洲| 亚洲色图在线视频| 国产区在线观看成人精品| 欧美一区综合| 裸体一区二区三区| 一区免费视频| 久久夜色精品国产| 日韩午夜在线播放| 老司机一区二区三区| 一本色道精品久久一区二区三区| 国产精品久久一区二区三区| 亚洲一区三区电影在线观看| 亚洲欧美国产精品桃花| 国产欧美高清| 久久精品夜夜夜夜久久| 亚洲毛片一区二区| 午夜影视日本亚洲欧洲精品| 在线免费观看日本欧美| 欧美国产第一页| 欧美亚洲一区在线| a91a精品视频在线观看| 久久久久久日产精品| 一区二区三区欧美亚洲| 一区二区在线视频播放| 国产精品成人免费| 欧美精品一区在线发布| 免费视频一区| 欧美激情a∨在线视频播放| 夜夜爽av福利精品导航 | 午夜激情久久久| 99视频热这里只有精品免费| 免费日韩成人| 久久天天躁夜夜躁狠狠躁2022| av不卡免费看| 日韩视频免费观看| 最新亚洲激情| 亚洲国产精品一区二区第四页av| 国产在线一区二区三区四区 | 欧美美女bbbb| 久久久999精品免费| 一区二区欧美日韩| 可以免费看不卡的av网站| 亚洲一区在线观看免费观看电影高清| 国产一区清纯| 国产精品国产三级国产专区53| 欧美三级午夜理伦三级中文幕| 久久久久久婷| 欧美一区二区三区四区视频| 欧美顶级少妇做爰| 欧美在线亚洲综合一区| 一区二区三区免费网站| 一区二区三区四区国产| 一区一区视频| 在线观看视频一区| 国产精品mv在线观看| 欧美mv日韩mv国产网站| 久久精品1区| 日韩天天综合| 欧美高清一区| 91久久黄色| 激情视频一区二区| 欧美日韩一级大片网址| 久久天天躁狠狠躁夜夜av| 亚洲精品女av网站| 亚洲精品乱码| 久久综合中文字幕| 国产人妖伪娘一区91| 国产精品午夜国产小视频| 久久免费国产精品| 欧美xxx成人| 亚洲精品一区二区三区av| 一本久久青青| 日韩亚洲精品视频| 亚洲综合色丁香婷婷六月图片| 欧美激情一二三区| 美女主播精品视频一二三四| 欧美成人精品高清在线播放| 国产日韩精品久久久| 在线精品观看| 国产视频一区免费看| 尤物九九久久国产精品的特点| 国产精品久久午夜| 亚洲黄色成人| 亚洲黄色大片| 久久综合给合| 亚洲美女免费视频| 亚洲黄色影院| 亚洲精品少妇| 国产精品亚洲美女av网站| 国产一区二区欧美| 国产精品成人一区二区艾草| 在线观看国产日韩| 国产自产女人91一区在线观看| 亚洲欧美一区二区激情| 美日韩精品免费观看视频| 亚洲一级在线| 欧美激情免费观看| 欧美福利精品| 久久国产精品99久久久久久老狼| 欧美一区二区三区四区夜夜大片| 欧美二区在线观看| 免费av成人在线| 一区二区三区在线观看欧美| 国产一区二区黄色| 韩日精品视频一区| 欧美专区福利在线| 久久野战av| 亚洲精品一区在线观看| 99国产精品久久久久久久| 久久久久99| 老司机精品福利视频| 国产在线欧美| 亚洲大胆女人| 国产精品国产三级国产普通话蜜臀 | 欧美顶级少妇做爰| 久久偷窥视频| 国产亚洲欧美一区二区| 激情视频一区二区三区| 国产精品视频在线观看| 亚洲欧美制服另类日韩| 亚洲专区一二三| 亚洲一区二区影院| 亚洲婷婷在线| 国产亚洲欧美另类中文| 国产日韩欧美三级| 亚洲免费黄色| 久久久999国产| 中日韩午夜理伦电影免费| 欧美精品国产| 欧美日韩亚洲一区二| 亚洲一区网站| 久久精品国产综合精品| 久久九九有精品国产23| 欧美日韩91| 欧美一区二区播放| 欧美激情一区在线| 欧美激情黄色片| 国产亚洲一本大道中文在线| av成人免费| 欧美成人性网| avtt综合网| 国产亚洲a∨片在线观看| 99pao成人国产永久免费视频| 一区二区精品| 模特精品裸拍一区| 99精品视频免费观看视频| 亚洲伊人观看| 久久人人97超碰人人澡爱香蕉| 欧美另类在线播放| 国产精品日韩欧美| 免费试看一区| 99视频有精品| 国内精品久久久久久久果冻传媒| 日韩视频一区二区三区在线播放免费观看| 亚洲第一级黄色片| 欧美中文字幕在线| 亚洲欧洲精品一区二区| 久久人人爽人人爽爽久久| 免费观看日韩av| 国产综合色在线| 国产欧美一区在线| 亚洲高清激情| 久久女同互慰一区二区三区| 一本色道久久88综合日韩精品| 久久激情一区| 欧美日韩视频在线一区二区观看视频| 国内精品久久久久影院 日本资源| 欧美激情女人20p| 蜜桃av噜噜一区二区三区| 久久成人精品一区二区三区| 亚洲私拍自拍| 亚洲国产免费看| 亚洲激情第一区| 亚洲一级片在线观看| 亚洲精品日产精品乱码不卡| 欧美成人三级在线| 国内精品久久久久久久影视麻豆 | 欧美激情精品久久久久久变态| 亚洲欧美日韩精品久久|