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

socketref,再見!高德

https://github.com/adoggie

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

常用鏈接

留言簿(54)

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

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

#



  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 放屁阿狗 閱讀(487) | 評論 (0)編輯 收藏

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


OGR1.6 above
python2.4 above

只需要定義fields,roads數(shù)據(jù)調(diào)用serial_shpdata_road()即可一次輸出到shp文件
不適合大批量坐標(biāo)一次生成shp
ogr的問題在于python代碼中初始化layer之后傳遞到其他函數(shù)使用將會導(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 放屁阿狗 閱讀(1516) | 評論 (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)會有點(diǎn)問題,那就是python+Qt做com組件,這個(gè)組件與影像系統(tǒng)通信,
com組件訪問顯示qt的ui界面會存在問題,沒有做過嘗試,不知是否能行
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 放屁阿狗 閱讀(505) | 評論 (0)編輯 收藏

在弄地圖路網(wǎng)接口時(shí),北京提供的是c的實(shí)現(xiàn)版本,本就知道ctypes可以直接調(diào)用外部dll,之前一直用swig進(jìn)行包裝給python使用,好久沒弄都忘了,再弄就嫌煩了,最簡單就用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)生成對應(yīng)的數(shù)據(jù)結(jié)構(gòu),試了一下avcodec.h,立馬出來個(gè)avcodec.py,爽啊
posted @ 2012-03-01 10:16 放屁阿狗 閱讀(548) | 評論 (1)編輯 收藏

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

公司的shp數(shù)據(jù)都是以秒為單位存儲,要做監(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 放屁阿狗 閱讀(929) | 評論 (0)編輯 收藏

僅列出標(biāo)題
共25頁: 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>
            中日韩男男gay无套| 欧美日韩亚洲视频一区| 亚洲午夜羞羞片| 久久全国免费视频| 亚洲免费在线观看视频| 女同性一区二区三区人了人一| 久久国产视频网| 国产精品jizz在线观看美国| 亚洲国产精品一区二区www| 国际精品欧美精品| 亚洲欧美国产制服动漫| 亚洲在线日韩| 欧美三级第一页| aa成人免费视频| 一本色道久久综合亚洲精品不| 欧美成人免费一级人片100| 狂野欧美一区| 黄色成人av在线| 久久爱www.| 久久尤物视频| 尤物精品在线| 久久综合色婷婷| 欧美国产综合视频| 亚洲国产婷婷综合在线精品 | 最新日韩欧美| 亚洲区国产区| 欧美精品999| 日韩一二三区视频| 亚洲自拍偷拍福利| 国产精品入口夜色视频大尺度| 亚洲一区二区三区四区五区午夜 | 一本色道久久综合狠狠躁篇怎么玩| 欧美不卡三区| 99在线精品视频在线观看| 亚洲综合精品自拍| 国产精品一区二区三区四区| 午夜在线精品偷拍| 免费成人黄色| 日韩午夜av电影| 欧美视频官网| 销魂美女一区二区三区视频在线| 久久婷婷丁香| 日韩天堂av| 国产精品一区二区黑丝| 久久精品国产精品亚洲| 欧美国产精品va在线观看| 一区二区欧美在线观看| 国产精品网站在线观看| 久久亚洲欧美| 一本久久a久久精品亚洲| 久久国产黑丝| 亚洲三级毛片| 国产精品狼人久久影院观看方式| 欧美在线一区二区三区| 亚洲人成人一区二区三区| 小处雏高清一区二区三区| 一区二区三区在线视频免费观看| 欧美激情1区2区3区| 亚洲视频在线观看免费| 蜜桃久久av一区| 亚洲淫性视频| 亚洲国产1区| 国产精品亚洲视频| 欧美不卡三区| 欧美一区二区三区四区夜夜大片 | 欧美专区18| 亚洲美女中文字幕| 另类欧美日韩国产在线| 亚洲欧美激情一区| 1000部国产精品成人观看| 国产精品jizz在线观看美国| 老司机久久99久久精品播放免费| 一本一道久久综合狠狠老精东影业| 麻豆精品视频| 午夜一区在线| 夜夜嗨av一区二区三区四季av| 韩国精品久久久999| 欧美午夜免费影院| 欧美大片第1页| 久久九九久久九九| 亚洲欧美日韩综合| 亚洲精品一区久久久久久 | 久久精品国产视频| 中日韩在线视频| 伊人久久噜噜噜躁狠狠躁| 国产精品嫩草99a| 欧美精品亚洲二区| 欧美成人高清视频| 久久美女性网| 久久av红桃一区二区小说| 亚洲一区在线观看免费观看电影高清| 亚洲黄色三级| 亚洲国产另类精品专区| 久久亚洲精品一区二区| 久久精品三级| 欧美影院视频| 欧美一区二区三区在线观看| 亚洲在线一区二区| 亚洲视频精选| 亚洲性线免费观看视频成熟| aa级大片欧美| 99在线观看免费视频精品观看| 亚洲国产精品女人久久久| 在线观看欧美日本| 亚洲第一天堂无码专区| 亚洲国产成人久久综合一区| 亚洲第一精品在线| 亚洲国产日韩欧美在线图片 | 亚洲私人影院在线观看| 99日韩精品| 亚洲视频图片小说| 亚洲欧美福利一区二区| 先锋影院在线亚洲| 久久久99爱| 欧美成人国产| 亚洲国产欧美一区二区三区久久| 亚洲国产成人91精品 | 亚洲国产另类久久精品| 亚洲第一精品福利| 亚洲精品欧美精品| 亚洲图片欧洲图片日韩av| 亚洲欧美日韩电影| 久久精品综合网| 欧美国产综合一区二区| 欧美性色aⅴ视频一区日韩精品| 国产精品日本一区二区| 国产一区二区久久| 最新69国产成人精品视频免费| 一区二区三区蜜桃网| 午夜一区不卡| 欧美1区免费| 99国产精品国产精品久久| 亚洲综合99| 久久综合99re88久久爱| 欧美日韩和欧美的一区二区| 国产色综合久久| 亚洲国产精品一区在线观看不卡| 9i看片成人免费高清| 久久精品日产第一区二区| 欧美国产一区二区| 亚洲图片欧洲图片日韩av| 久久蜜桃av一区精品变态类天堂| 欧美精品一区二区三区在线播放| 国产精品日韩精品| 亚洲国产女人aaa毛片在线| 亚洲一区免费观看| 欧美v国产在线一区二区三区| 一本色道婷婷久久欧美| 久久久女女女女999久久| 欧美三级视频在线| 极品少妇一区二区三区| 一本大道久久a久久精二百| 久久久久久网| 中文成人激情娱乐网| 麻豆成人在线观看| 国产视频一区在线| 亚洲午夜久久久久久久久电影网| 久久这里只有精品视频首页| 中国亚洲黄色| 欧美欧美全黄| 亚洲国产三级在线| 久久久精品999| 一区二区三区日韩欧美精品| 免费看av成人| 国内久久精品视频| 亚洲欧美综合精品久久成人| 亚洲国内高清视频| 久久影视三级福利片| 国产日韩一级二级三级| 亚洲小说欧美另类婷婷| 最新成人在线| 欧美aⅴ一区二区三区视频| 好吊成人免视频| 久久爱www| 亚洲欧美另类国产| 国产精品久久久999| 在线亚洲+欧美+日本专区| 欧美国产日韩a欧美在线观看| 久久成人国产精品| 国产亚洲欧美aaaa| 久久av老司机精品网站导航| 亚洲无限乱码一二三四麻| 欧美肉体xxxx裸体137大胆| 一区二区免费在线观看| 亚洲精品婷婷| 欧美人与性禽动交情品| 99精品国产热久久91蜜凸| 亚洲国产另类精品专区| 欧美激情91| 制服丝袜激情欧洲亚洲| 99v久久综合狠狠综合久久| 欧美久久在线| 亚洲性色视频| 亚洲一区二区网站| 国产午夜精品在线观看| 久久亚洲私人国产精品va| 久久久久久综合| 91久久精品国产91性色| 亚洲人成啪啪网站| 欧美性一区二区|