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

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>
            夜夜爽99久久国产综合精品女不卡| 亚洲天堂偷拍| 欧美大片在线看| 久久综合色综合88| 久久在线精品| 快射av在线播放一区| 久久综合电影| 欧美片第1页综合| 欧美日韩一区二区免费视频| 欧美日韩国产电影| 国产精品乱码久久久久久| 国产亚洲一区二区三区| 亚洲电影欧美电影有声小说| 99re6这里只有精品| 亚洲综合第一页| 久久久久**毛片大全| 亚洲国产高清一区二区三区| 亚洲美女一区| 欧美中文字幕视频| 欧美精品一区二区三区蜜桃| 国产精品影音先锋| 亚洲国产婷婷| 欧美亚洲在线观看| 欧美激情第五页| 欧美亚洲视频在线观看| 欧美国产在线电影| 中文一区二区| 欧美一级片一区| 老鸭窝毛片一区二区三区 | 久久免费黄色| 欧美成在线观看| 国产欧美日韩一区二区三区| 亚洲欧洲日本mm| 久久免费高清视频| 亚洲一二三四久久| 欧美片第一页| 亚洲国产成人精品久久久国产成人一区 | 国产精品国色综合久久| 亚洲精华国产欧美| 久久久久久夜精品精品免费| 亚洲精品欧美日韩| 久久―日本道色综合久久| 国产精品外国| 亚洲一区视频在线| 日韩视频在线免费| 欧美另类女人| 亚洲激情视频在线| 久久综合一区二区三区| 亚洲自拍偷拍福利| 欧美视频日韩视频在线观看| 亚洲日本中文字幕区| 久久久久综合网| 亚洲欧美偷拍卡通变态| 欧美性久久久| 亚洲午夜激情网页| 亚洲精品一二三| 欧美激情精品久久久久久| 亚洲二区免费| 欧美国产一区二区| 欧美大色视频| 99re6这里只有精品| 亚洲精品1区2区| 欧美黄免费看| 亚洲精选视频免费看| 亚洲欧洲在线观看| 欧美日韩国产91| 中文一区在线| 亚洲视频图片小说| 国产精品区二区三区日本| 亚洲欧美视频一区二区三区| 亚洲一区二区成人| 国产婷婷97碰碰久久人人蜜臀| 欧美怡红院视频| 欧美中文在线免费| 亚洲精品1234| 日韩一级不卡| 国产精品一区久久久久| 久久乐国产精品| 久久综合狠狠综合久久激情| 亚洲免费观看视频| 亚洲一级二级在线| 欧美日韩在线观看一区二区三区| 午夜在线精品偷拍| 国产一区在线播放| 麻豆国产精品777777在线| 免费观看不卡av| 一区二区三区欧美成人| 亚洲视频免费看| 精品51国产黑色丝袜高跟鞋| 亚洲国产91| 国产精品乱码一区二三区小蝌蚪| 久久久91精品国产一区二区三区 | 亚洲第一精品久久忘忧草社区| 免费看的黄色欧美网站| 中文精品视频| 久久成人国产精品| 亚洲精选中文字幕| 亚洲一区精品电影| 亚洲国产精品一区二区第一页| 日韩一级不卡| 在线观看一区二区精品视频| 日韩亚洲精品电影| 在线精品在线| 亚洲欧美另类在线观看| 亚洲精品久久久久久下一站| 亚洲砖区区免费| 亚洲日本无吗高清不卡| 午夜综合激情| 亚洲私人黄色宅男| 蜜臀久久99精品久久久画质超高清| 亚洲综合丁香| 欧美黄色大片网站| 久色婷婷小香蕉久久| 国产精品久久久亚洲一区| 亚洲成色www8888| 国产视频一区在线观看| 亚洲三级性片| 最新高清无码专区| 久久精品国产清高在天天线| 亚洲综合欧美| 欧美日韩大片一区二区三区| 欧美1区2区| 狠狠色狠狠色综合日日五| 亚洲自拍偷拍色片视频| 制服丝袜激情欧洲亚洲| 免费一区视频| 欧美成人午夜剧场免费观看| 国产亚洲亚洲| 久久9热精品视频| 久久精品系列| 国产区亚洲区欧美区| 亚洲视频播放| 亚洲欧美日韩精品久久久| 欧美三级日本三级少妇99| 亚洲六月丁香色婷婷综合久久| 亚洲国产日韩一区| 麻豆精品精华液| 欧美电影在线| 亚洲精品字幕| 欧美婷婷久久| 亚洲一区免费| 亚洲欧美日韩精品一区二区| 国产精品高潮视频| 久久九九精品99国产精品| 亚洲一区二区三区高清| 亚洲视频你懂的| 欧美日韩中文字幕在线| 在线视频亚洲| 先锋影音网一区二区| 国产人妖伪娘一区91| 久久狠狠一本精品综合网| 久久久久网址| 亚洲欧洲精品一区| 欧美黄色大片网站| 一区二区三区四区五区视频| 亚洲在线一区二区| 国产日韩欧美视频在线| 久久综合国产精品| 日韩午夜激情av| 欧美一区二区视频97| 狠狠色噜噜狠狠狠狠色吗综合| 免费在线亚洲欧美| 亚洲一区图片| 欧美www在线| 亚洲天堂久久| 怡红院av一区二区三区| 欧美日韩国产在线一区| 性久久久久久久| 欧美激情精品久久久久久黑人| 亚洲视频免费在线| 一色屋精品视频免费看| 欧美破处大片在线视频| 午夜精品免费在线| 亚洲国产精品一区制服丝袜| 亚洲欧美激情四射在线日| 亚洲电影成人| 国产欧美日韩视频一区二区三区| 麻豆九一精品爱看视频在线观看免费| 亚洲精品少妇30p| 久久久xxx| 亚洲一二三四区| 亚洲国产成人精品女人久久久| 国产精品乱码人人做人人爱| 欧美不卡视频一区| 欧美一区高清| 国产精品99久久久久久久女警| 欧美99在线视频观看| 欧美亚洲综合久久| 制服丝袜激情欧洲亚洲| 亚洲成色777777女色窝| 国产精品日韩欧美一区二区| 欧美激情性爽国产精品17p| 欧美伊人精品成人久久综合97 | 亚洲欧美日韩一区二区| 亚洲电影专区| 老司机免费视频一区二区| 欧美在线观看你懂的| 国产精品99久久久久久久女警 | 亚洲国产精品va在看黑人| 国产精品免费区二区三区观看|