08/12/26

1、Table1.find(:all,:conditions=>[sql,params],:include=>[table2,table3]

其中在include内的表table2,table3都会与表table1进行左连接;而且要使得以上语句能够正确运行,table2,table3必须与table1有类似belongs_to,has_many的关联;

以上rails中的代码也可以直接用sql语句生成,例如要找跟id为1的项目有关的公司名称、联系人的姓和名,其关联表为:project_firm,则rails中的代码为:

ProjectFirm.find(:all,:conditions=>"project_id = 1",:include=>[:firms,:contacts,:projects])

(注:以上语句不仅会把公司名称、联系人的姓名搜索进来,也会把这些表所拥有的属性全部搜索进来,要将字段简化可直接用sql语句)

直接写sql代码为:

select p.name as p_name,a.name as a_name,c.last_name as l_name,c.first_name as f_name
from project_firms as pf
left join projects as p on pf.project_id = p.id
left join accounts as a on pf.firm_id = a.id
left join contacts as c on pf.firm_contact_id=c.id

在包含prototype.js的javascript中实现像ruby那样

1、单个数字的迭代

ruby代码:

5.times{|i| puts i}

javascript实现:

(5).times(function(n){
puts i
})

其中5必须在括号内,否则会出错;另外,function(n)有点类似ruby代码中的|i|;

2、区间迭代

ruby代码

(1..5).each{|i| puts i}

javascript实现:

$R(1,5).each(function(n){
puts i
})

3、方法

ruby代码:
str=['a','b','c']
str1=str.clone
n=str.size

javascript实现:

str=['a','b','c']
str1=str.clone()
n=str.size()

其中clone和size后的括号是必须的;

4、类似map的方法——invoke,功能很好,很强大

['hello','world','good'].invoke('toUpperCase') => ['HELLO','WORLD','GOOD']

['hello','world','good'].invoke('substring',0,3) =>['hel','wor','goo']

也可以控制元素的属性和css样式,如:

$('test1','test2','test3').invoke('toggle'):使得id为test1,test2,test3元素的display属性在inline和none间转换;

$('test1','test2','test3').invoke('addClassName','show'):为每个元素添加class="show";

5、prototype.js中的扩展

一般的用法为:Element.methods,例如:

Element.hide('my_div');
Element.addClassName('my_div','style_name')

可利用扩展:
my_div = document.createElement('div')
Element.extend(my_div);
my_div.hide();
my_div.addClassName('style_name')(或可直接写为:my_div.addClassName('style_name').hide();)
document.body.appendChild(my_div)

也就是说,在进行扩展后,元素将拥有Element类的方法;其中,常用的美元符$('my_div'),也就是对美元符进行了扩展;同理$$('my_style')也是;

另外还可以用Element.addMethods()方法为元素添加自己所写的方法,例如:

var myMethod={
truncate:function(element,length){
element = $(element);
return element.update(element.innerHTML.truncate(lenght));
},
updateAndMark:function(element,html){
return $(element).update(html).addClassName('update');
}
}

在利用:Element.addMethods(myMethod)进行扩展后,便可使用以下方法:

$('my_div').truncate(100)

需要注意的是:当扩展涉及到上级节点时,在不同的浏览器中需进行如同的处理,例如在IE中以下语句会报错:

$('someElement').parentNode.hide()

若要使得在所有的浏览器中都兼容,则需改为:

$($('someElement').parentNode).hide()
在Google Earth Engine (GEE) 中,你可以使用 Landsat 数据集来获取特定区域和时间范围内的卫星影像。以下是一个基本步骤的示例代码,用于查找四川省在指定日期范围内的LC08/C02/T1_L2(Landsat 8 Tier 1 Level 2)数据: ```python # 导入必要的库 import ee ee.Authenticate() # 如果尚未登录,这里需要提供GEE凭证 ee.Initialize() # 定义四川省的地理坐标范围 sichuan = ee.Geometry.Rectangle([102.95, 26.04, 107.59, 34.90]) # 纬度、经度 # 定义时间范围,例如2018年到2020年 start_date = '2018-01-01' end_date = '2020-12-31' # 查询Landsat 8 C02数据集 landsat_dataset = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') filtered_images = landsat_dataset.filterDate(start_date, end_date).filterBounds(sichuan) # 检查是否有可用数据 images_count = filtered_images.size().getInfo() if images_count > 0: # 选择第一张图像作为代表 image = filtered_images.first() print(f"Found {images_count} images within the defined area and time period.") else: print("No images found for the specified area and time range.") # 可选:进一步处理或下载影像 # 下载图像(注意这可能会消耗大量存储空间) # image.downloadToDrive({'name': 'sichuan_landsat'}, scale=30) ``` 这个代码片段首先设置了四川省的几何范围,然后创建了一个时间范围过滤器。接着从Landsat 8 C02集合中获取在这个范围和时间范围内匹配的数据。如果找到图像,则显示总数;如果没有则提示没有找到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值